Kako pozvati uloge u Ansible playbook-u?
sobes.tech АИ
Одговор од АИ
Ролите у Ansible могу се извикати по неколико начина у оквиру плейбука.
-
Коришћење кључне речи
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.