როგორ დავძახოთ როლები Ansible-ის playbook-ში?
sobes.tech AI
პასუხი AI-სგან
Ansible-дағы рөлдерді бірнеше тәсілмен шақыруға болады.
-
Playbook деңгейінде
rolesкілт сөзін пайдалану:# playbooks/my_playbook.yml - атауы: серверлерге рөлдерді қолдану hosts: webservers become: иә roles: - role: common # 'common' рөлін шақыру - role: nginx # 'nginx' рөлін шақыру vars: # Рөлге айнымалыларды беру nginx_port: 8080 - another_role # Қысқартылған шақыру формасыБұл тәсіл
hostsбөлімінде көрсетілген барлық хосттар үшін рөлдерді кезек-кезек орындау үшін пайдаланылады. -
include_roleмодулін пайдалану:# playbooks/my_playbook.yml - атауы: шарттармен рөлдерді қолдану hosts: appservers tasks: - атауы: дерекқор рөлін қосу (тек dev үшін) include_role: name: database when: env == 'dev' # Шартты шақыру - атауы: қолданба рөлін қосу include_role: name: app vars: app_version: 1.2.0 # Айнымалыларды беруinclude_roleрөлді ағымдағы тапсырмалар тізіміне қосқандай орындайды. Ол шарттар (when) және циклдер (loop) қолдануға мүмкіндік береді. -
import_roleмодулін пайдалану:# playbooks/my_playbook.yml - атауы: қолданба рөлін импорттау hosts: appservers tasks: - атауы: барлық хосттар үшін рөлді импорттау import_role: name: app vars: app_config_file: /etc/app/config.conf # Айнымалыларды беруimport_roleплейбук парсинг кезеңінде өңделеді, оның нақты орындалуынан бұрын. Бұл барлық директивалар, мысалыwhen, рөлдің барлық тапсырмаларына қолданылады дегенді білдіреді, алvarsарқылы берілген айнымалылар рөл ішінде қол жетімді болады.
include_role және import_role арасындағы негізгі айырмашылық өңдеу уақытында: import_role статикалық түрде парсинг кезеңінде өңделеді, ал include_role динамикалық түрде орындалу кезінде. Бұл шарттар мен циклдерді қолдану мүмкіндігіне әсер етеді:
| Функция | include_role |
import_role |
|---|---|---|
| Өңдеу | Динамикалық | Статикалық |
when қолдану |
Иә | Жоқ |
loop қолдану |
Иә | Жоқ |
| Бұрын анықталған айнымалыларды қолдану | Иә | Жоқ |
Бұл әдістердің таңдалуы қажетті икемділік пен өңдеу уақытынан тәуелді. Қарапайым рөлдерді қосу үшін әдетте roles немесе import_role жеткілікті, ал күрделі сценарийлер үшін шарттар мен циклдермен include_role пайдаланылады.