Hogyan hívhatók meg a szerepek az Ansible playbookban?
sobes.tech MI
Válasz az MI-től
Az Ansible szerepköröket többféleképpen lehet hívni a playbookon belül.
-
A
roleskulcsszó használata a playbook szintjén:# playbooks/my_playbook.yml - név: Szerepkörök alkalmazása a szervereken hosts: webservers become: igen roles: - role: common # A 'common' szerepkör hívása - role: nginx # Az 'nginx' szerepkör hívása vars: # Változók átadása a szerepkörnek nginx_port: 8080 - another_role # Rövidített hívási formaEz a módszer a szerepkörök hívására szolgál, amelyek egymás után kerülnek végrehajtásra minden, a
hostsszekcióban megadott hoszton. -
Az
include_rolemodul használata a feladatok listájában:# playbooks/my_playbook.yml - név: Szerepkörök alkalmazása feltételekkel hosts: appservers tasks: - név: Adatbázis szerepkör bekapcsolása (csak fejlesztéshez) include_role: name: database when: env == 'dev' # Feltétel szerinti hívás - név: Alkalmazás szerepkör bekapcsolása include_role: name: app vars: app_version: 1.2.0 # Változók átadásaAz
include_rolemodul úgy végzi a szerepkört, mintha az egy feladatsor lenne, amelyet a jelenlegi playbookba illesztettek be. Lehetővé teszi feltételek (when) és ciklusok (loop) használatát a szerepkör végrehajtásának irányítására. -
Az
import_rolemodul használata a feladatok listájában:# playbooks/my_playbook.yml - név: Alkalmazás szerepkör importálása hosts: appservers tasks: - név: Az alkalmazás szerepkör importálása minden hosztra import_role: name: app vars: app_config_file: /etc/app/config.conf # Változók átadásaAz
import_rolemodul a playbook értelmezése során, a végrehajtás előtt kerül feldolgozásra. Ez azt jelenti, hogy minden direktíva, mint például awhen, az összes szerepkörön belüli feladatra alkalmazódik, nem csak a hívásra. Avars-on keresztül átadott változók elérhetőek a szerepkörön belül.
A fő különbség az include_role és az import_role között az időzítés: az import_role statikus, a playbook értelmezésekor történik, míg az include_role dinamikusan, a futás során. Ez befolyásolja a feltételek és ciklusok használatát:
| Funkció | include_role |
import_role |
|---|---|---|
| Feldolgozás | Dinamikus | Statikus |
when használata a híváshoz |
Igen | Nem |
loop használata a híváshoz |
Igen | Nem |
| Lehetőség a korábban definiált változók használatára a playbookban | Igen | Nem |
A módszer kiválasztása a kívánt rugalmasságtól és feldolgozási időtől függ. Egyszerű szerepkörök esetén általában elegendő a roles kulcsszó vagy az import_role. Bonyolultabb forgatókönyvekhez, feltételekkel és ciklusokkal, a include_role ajánlott.