Kā izsaukt lomas Ansible playbook?
sobes.tech AI
Atbilde no AI
Ansible lomas var izsaukt vairākos veidos, iekļaujot playbook.
-
Izmantojot atslēgas vārdu
rolesplaybook līmenī:# playbooks/my_playbook.yml - nosaukums: Lomu piemērošana serveriem hosts: webservers become: jā roles: - role: common # Izsauc lomu 'common' - role: nginx # Izsauc lomu 'nginx' vars: # Pārsūtīt mainīgos lomai nginx_port: 8080 - another_role # Īsāka izsaukuma formaŠis veids tiek izmantots, lai izsauktu lomus, kas tiks izpildīti secīgi visiem
hostssadaļā norādītajiem hostiem. -
Izmantojot
include_rolemoduli uzdevumu sarakstā:# playbooks/my_playbook.yml - nosaukums: Lomu piemērošana ar nosacījumiem hosts: appservers tasks: - nosaukums: Datubāzes lomas aktivizēšana (tikai dev) include_role: name: database when: env == 'dev' # Nosacījuma izsaukums - nosaukums: Lietojumprogrammas lomas aktivizēšana include_role: name: app vars: app_version: 1.2.0 # Mainīgo pārsūtīšana lomaiinclude_roleizpilda lomu kā daļu no pašreizējā uzdevumu saraksta. Tas ļauj izmantot nosacījumus (when) un ciklus (loop) lomas kontrolei. -
Izmantojot
import_rolemoduli uzdevumu sarakstā:# playbooks/my_playbook.yml - nosaukums: Lomas importēšana hosts: appservers tasks: - nosaukums: Visu hostu lomas importēšana import_role: name: app vars: app_config_file: /etc/app/config.conf # Mainīgo pārsūtīšanaimport_roletiek apstrādāts plēbuka parsēšanas laikā, pirms tā faktiskās izpildes. Tas nozīmē, ka visas direktīvas, piemēram,when, tiks piemērotas visām lomas uzdevumiem, ne tikai pašam izsaukumam. Mainīgie, kas pārsūtīti arvars, būs pieejami lomā.
Galvenā atšķirība starp include_role un import_role ir apstrādes laiks: import_role tiek apstrādāts statiski parsēšanas laikā, bet include_role — dinamiski izpildes laikā. Tas ietekmē iespēju izmantot nosacījumus un ciklus:
| Funkcija | include_role |
import_role |
|---|---|---|
| Apstrāde | Dinamiski | Statiski |
when izmantošana |
Jā | Nē |
loop izmantošana |
Jā | Nē |
| Iepriekš definētu mainīgo izmantošana | Jā | Nē |
Izvēle starp šiem veidiem ir atkarīga no nepieciešamās elastības un apstrādes laika. Vienkāršiem lomiem parasti pietiek ar roles vai import_role. Sarežģītākos scenārijos ar nosacījumiem un cikliem tiek izmantots include_role.