Jak volat role v playbooku Ansible?
sobes.tech AI
Odpověď od AI
Role v Ansible lze volat několika způsoby v rámci playbooku.
-
Použití klíčového slova
rolesna úrovni playbooku:# playbooks/my_playbook.yml - název: Aplikace rolí na servery hosts: webservers become: ano roles: - role: common # Volání role 'common' - role: nginx # Volání role 'nginx' vars: # Předání proměnných do role nginx_port: 8080 - another_role # Zkrácená forma voláníTento způsob se používá pro volání rolí, které budou provedeny postupně na všech hostitelích definovaných v sekci
hosts. -
Použití modulu
include_rolev seznamu úkolů:# playbooks/my_playbook.yml - název: Aplikace rolí s podmínkami hosts: appservers tasks: - název: Zapnutí databázové role (pouze pro dev) include_role: name: database when: env == 'dev' # Podmíněné volání role - název: Zapnutí aplikační role include_role: name: app vars: app_version: 1.2.0 # Předání proměnných do roleModul
include_roleprovádí roli jako by to byl seznam úkolů, začleněný do aktuálního playbooku. Umožňuje používat podmínky (when) a smyčky (loop) pro řízení provádění role. -
Použití modulu
import_rolev seznamu úkolů:# playbooks/my_playbook.yml - název: Importování role aplikace hosts: appservers tasks: - název: Importování role aplikace pro všechny hostitele import_role: name: app vars: app_config_file: /etc/app/config.conf # Předání proměnnýchModul
import_roleje zpracováván ve fázi parsování playbooku, před jeho skutečným provedením. To znamená, že všechny direktivy, jako jewhen, budou aplikovány na všechny úkoly uvnitř role, nikoli pouze na samotné volání role. Proměnné předané přesvarsbudou dostupné uvnitř role.
Hlavní rozdíl mezi include_role a import_role spočívá v době zpracování: import_role je zpracováván staticky ve fázi parsování, zatímco include_role dynamicky během běhu playbooku. To ovlivňuje možnost použití podmínek a smyček:
| Funkce | include_role |
import_role |
|---|---|---|
| Zpracování | Dynamické | Statické |
Použití when pro volání |
Ano | Ne |
Použití loop pro volání |
Ano | Ne |
| Možnost použití proměnných definovaných dříve v playbooku | Ano | Ne |
Volba mezi těmito způsoby závisí na požadované flexibilitě a době zpracování. Pro jednoduché začlenění rolí obvykle stačí klíčové slovo roles nebo import_role. Pro složitější scénáře s podmínkami a smyčkami se používá include_role.