Kuidas kutsuda rolle Ansible'i playbook'is?
sobes.tech AI
Vastus AI-lt
Ansible'i rollid saab kutsuda mitmel viisil playbook'i raames.
-
Kasutades võtmesõna
rolesplaybook'i tasemel:# playbooks/my_playbook.yml - nimi: Rollide rakendamine serveritele hosts: webservers become: jah roles: - role: common # Kutsutakse roll 'common' - role: nginx # Kutsutakse roll 'nginx' vars: # Välja saadetavad muutujad rollile nginx_port: 8080 - another_role # Lühendatud kutsumise vormSeda meetodit kasutatakse rollide kutsumiseks, mis järjekorras täidetakse kõigil
hostssektsioonis määratletud hostidel. -
Kasutades
include_rolemoodulit ülesannete nimekirjas:# playbooks/my_playbook.yml - nimi: Rollide rakendamine tingimustega hosts: appservers tasks: - nimi: Andmebaasi rolli aktiveerimine (ainult dev) include_role: name: database when: env == 'dev' # Tingimuslik kutsumine - nimi: Rakenduse rolli aktiveerimine include_role: name: app vars: app_version: 1.2.0 # Muutujate edastamine rollileinclude_roletäidab rolli nagu see oleks ülesannete nimekiri, mis on lisatud käesolevasse playbook'i. See võimaldab kasutada tingimusi (when) ja tsükleid (loop) rolli kontrollimiseks. -
Kasutades
import_rolemoodulit ülesannete nimekirjas:# playbooks/my_playbook.yml - nimi: Rolli importimine hosts: appservers tasks: - nimi: Kõigi hostide rolli importimine import_role: name: app vars: app_config_file: /etc/app/config.conf # Muutujate edastamineimport_roletöödeldakse playbook'i parsimise etapis enne selle tegelikku täitmist. See tähendab, et kõik direktiivid, naguwhen, rakenduvad kõigile rolli ülesannetele, mitte ainult kutsumisele. Muutujad, mis edastataksevarskaudu, on saadaval rolli sees.
Peamine erinevus include_role ja import_role vahel on töötlemise aeg: import_role töödeldakse statiliselt parsimise ajal, include_role aga dünaamiliselt täitmise ajal. See mõjutab võimalust kasutada tingimusi ja tsükleid:
| Funktsioon | include_role |
import_role |
|---|---|---|
| Töötlemine | Dünaamiline | Statiline |
when kasutamine |
Jah | Ei |
loop kasutamine |
Jah | Ei |
| Võimalus kasutada eelnevalt määratletud muutujaid playbook'is | Jah | Ei |
Valik nende meetodite vahel sõltub nõutavast paindlikkusest ja töötlemise ajast. Lihtsate rollide kaasamiseks piisab tavaliselt roles või import_role. Keerulisemate stsenaariumide puhul, kus on tingimused ja tsüklid, kasutatakse include_role.