Kaip iškviesti roles Ansible playbook'e?
sobes.tech AI
Atsakymas iš AI
Ansible vaidmenis galima iškviesti keliais būdais playbook'e.
-
Naudojant
rolesraktinį žodį playbook'o lygyje:# playbooks/my_playbook.yml - pavadinimas: vaidmenų taikymas serveriams hosts: webservers become: taip roles: - role: common # 'common' vaidmens iškvietimas - role: nginx # 'nginx' vaidmens iškvietimas vars: # Kintamųjų perdavimas vaidmeniui nginx_port: 8080 - another_role # Trumpesnė iškvietimo formaŠis būdas taikomas vaidmenims, kurie bus vykdomi seka visiems
hostssekcijoje nurodytiems hostams. -
Naudojant
include_rolemodulį užduočių sąraše:# playbooks/my_playbook.yml - pavadinimas: vaidmenų taikymas su sąlygomis hosts: appservers tasks: - pavadinimas: Duomenų bazės vaidmens įjungimas (tik dev) include_role: name: database when: env == 'dev' # Sąlyginis iškvietimas - pavadinimas: Programėlės vaidmens įjungimas include_role: name: app vars: app_version: 1.2.0 # Kintamųjų perdavimas vaidmeniuiinclude_rolevykdo vaidmenį tarsi tai būtų užduočių sąrašas, įtrauktas į dabartinį playbook'ą. Leidžia naudoti sąlygas (when) ir ciklus (loop) vaidmens vykdymo kontrolei. -
Naudojant
import_rolemodulį užduočių sąraše:# playbooks/my_playbook.yml - pavadinimas: vaidmenų importavimas hosts: appservers tasks: - pavadinimas: Visų hostų vaidmenų importavimas import_role: name: app vars: app_config_file: /etc/app/config.conf # Kintamųjų perdavimasimport_roleapdorojamas playbook'o analizės etape, prieš jo vykdymą. Tai reiškia, kad visos direktyvos, tokios kaipwhen, bus taikomos visiems vaidmens užduotims, ovarsperduoti kintamieji bus prieinami vaidmenyje.
Pagrindinis skirtumas tarp include_role ir import_role yra laikas: import_role apdorojamas statiniu būdu analizės metu, o include_role — dinamiškai vykdymo metu. Tai įtakoja galimybę naudoti sąlygas ir ciklus:
| Funkcija | include_role |
import_role |
|---|---|---|
| Apdorojimas | Dinamiškas | Statinis |
when naudojimas |
Taip | Ne |
loop naudojimas |
Taip | Ne |
| Anksčiau apibrėžtų kintamųjų naudojimas | Taip | Ne |
Pasirinkimas priklauso nuo norimo lankstumo ir apdorojimo laiko. Paprastiems vaidmenų įtraukimo būdams dažniausiai pakanka roles arba import_role. Daugiau sudėtingų scenarijų su sąlygomis ir ciklais naudoja include_role.