Cum se apelează rolurile în playbook-ul Ansible?
sobes.tech AI
Răspuns de la AI
Rolurile în Ansible pot fi invocate în mai multe moduri în cadrul unui playbook.
-
Utilizarea cuvântului cheie
rolesla nivelul playbook-ului:# playbooks/my_playbook.yml - name: Aplică roluri pe servere hosts: webservers become: yes roles: - role: common # Invocarea rolului 'common' - role: nginx # Invocarea rolului 'nginx' vars: # Transmiterea variabilelor către rol nginx_port: 8080 - another_role # Forma scurtă de invocareAcest mod este folosit pentru a invoca roluri care vor fi executate secvențial pe toți gazdele definite în secțiunea
hosts. -
Utilizarea modulului
include_roleîn lista de sarcini:# playbooks/my_playbook.yml - name: Aplică roluri cu condiții hosts: appservers tasks: - name: Incluzând rolul bazei de date (doar pentru dev) include_role: name: database when: env == 'dev' # Invocarea condiționată a rolului - name: Incluzând rolul aplicației include_role: name: app vars: app_version: 1.2.0 # Transmiterea variabilelor către rolModulul
include_roleexecută rolul ca și cum ar fi o listă de sarcini inclusă în play-ul curent. Permite utilizarea condițiilor (when) și a buclelor (loop) pentru controlul execuției rolului. -
Utilizarea modulului
import_roleîn lista de sarcini:# playbooks/my_playbook.yml - name: Importă rolul aplicației hosts: appservers tasks: - name: Importă rolul aplicației pentru toate gazdele import_role: name: app vars: app_config_file: /etc/app/config.conf # Transmiterea variabilelorModulul
import_roleeste procesat în etapa de analiză a playbook-ului, înainte de execuția sa efectivă. Aceasta înseamnă că toate directivele, precumwhen, vor fi aplicate tuturor sarcinilor din rol, nu doar apelului de rol. Variabilele transmise prinvarsvor fi disponibile în interiorul rolului.
Diferența principală între include_role și import_role constă în momentul de procesare: import_role este procesat static în etapa de analiză, în timp ce include_role este procesat dinamic în timpul execuției playbook-ului. Acest lucru influențează posibilitatea de a folosi condiții și bucle:
| Funcție | include_role |
import_role |
|---|---|---|
| Procesare | Dinamică | Statică |
Utilizare when pentru invocare |
Da | Nu |
Utilizare loop pentru invocare |
Da | Nu |
| Posibilitatea de a folosi variabile definite anterior în play | Da | Nu |
Alegerea între aceste metode depinde de flexibilitatea necesară și de momentul de procesare. Pentru includerea simplă a rolurilor, de obicei, este suficient cuvântul cheie roles sau import_role. Pentru scenarii mai complexe cu condiții și bucle, se folosește include_role.