Ako volať role v playbooku Ansible?
sobes.tech AI
Odpoveď od AI
Roly v Ansible je možné volať viacerými spôsobmi v rámci playbooku.
-
Použitie kľúčového slova
rolesna úrovni playbooku:# playbooks/my_playbook.yml - názov: Aplikácia rolí na serveroch hosts: webservers become: áno roles: - role: common # Volanie role 'common' - role: nginx # Volanie role 'nginx' vars: # Prenos premenných do role nginx_port: 8080 - another_role # Skrátená forma volaniaTento spôsob sa používa na volanie rolí, ktoré budú vykonané postupne na všetkých hostiteľoch definovaných v sekcii
hosts. -
Použitie modulu
include_rolev zozname úloh:# playbooks/my_playbook.yml - názov: Aplikácia rolí s podmienkami hosts: appservers tasks: - názov: Zapnutie databázovej role (len pre dev) include_role: name: database when: env == 'dev' # Podmienené volanie role - názov: Zapnutie aplikačnej role include_role: name: app vars: app_version: 1.2.0 # Prenos premenných do roleModul
include_rolevykonáva rolu ako by to bol zoznam úloh, začlenený do aktuálneho playbooku. Umožňuje používanie podmienok (when) a cyklov (loop) na riadenie vykonávania role. -
Použitie modulu
import_rolev zozname úloh:# playbooks/my_playbook.yml - názov: Importovanie role aplikácie hosts: appservers tasks: - názov: Importovanie role pre všetkých hostiteľov import_role: name: app vars: app_config_file: /etc/app/config.conf # Prenos premennýchModul
import_roleje spracovávaný v štádiu parsovania playbooku, pred jeho skutočným vykonaním. To znamená, že všetky direktívy, ako jewhen, budú aplikované na všetky úlohy vnútri role, nie len na samotné volanie role. Premenné prenesené cezvarsbudú dostupné vo vnútri role.
Hlavný rozdiel medzi include_role a import_role spočíva v čase spracovania: import_role je spracovávaný staticky v štádiu parsovania, zatiaľ čo include_role dynamicky počas behu playbooku. To ovplyvňuje možnosť používania podmienok a cyklov:
| Funkcia | include_role |
import_role |
|---|---|---|
| Spracovanie | Dynamické | Statické |
Použitie when na volanie |
Áno | Nie |
Použitie loop na volanie |
Áno | Nie |
| Možnosť použitia premenných definovaných skôr v playbooku | Áno | Nie |
Výber medzi týmito spôsobmi závisí od požadovanej flexibility a času spracovania. Pre jednoduché začlenenie rolí zvyčajne stačí kľúčové slovo roles alebo import_role. Pre zložitejšie scenáre s podmienkami a cyklami sa používa include_role.