Ansible Include_Tasks

Ansible Include Tasks



Ansible és una eina de codi obert per a la gestió de la configuració, el desplegament d'aplicacions, l'automatització de tasques i molt més. Ansible ofereix un format fàcil de configurar mitjançant un llenguatge declaratiu llegible per l'home (YAML) per definir les tasques d'automatització que es coneixen com a llibres de joc.

Una manera en què Ansible pot automatitzar diverses tasques és utilitzar mòduls. Els mòduls són entitats singulars que inclouen tasques individuals que poden abastar de manera integral un subconjunt de tasques determinat. Per exemple, el mòdul apt està dissenyat per gestionar la gestió de paquets en distribucions basades en Debian.

En aquest tutorial, coneixerem la directiva include_task que ens permet carregar de manera dinàmica les tasques d'altres llibres de jugades. Aquesta característica ens permet desglossar els llibres de joc complexos en unitats més manejables que són més fàcils de llegir, escriure, depurar, reutilitzar i mantenir.







Mòdul Ansible.builtin.include_tasks

El mòdul include_tasks forma part de la col·lecció de nucli ansible que està disponible a totes les instal·lacions d'Ansible.



Ens permet incloure un fitxer amb una llista de les tasques a executar al llibre de jugades actual.



A continuació es mostra la sintaxi de la directiva include_tasks:





ansible.builtin.include_tasks:
fitxer:
aplicar:
etiquetes:
- etiqueta

La directiva accepta els paràmetres següents:

Dossier - Especifica el fitxer amb una llista de tasques que s'han d'executar al llibre de jugades actual.



Aplicar- Especifica un hash de paraules clau de tasques, com ara etiquetes, que s'aplicaran a les tasques dins d''inclou'.

Ús bàsic:

Comencem les coses amb un exemple bàsic. Suposem que tenim un conjunt de tasques en un fitxer anomenat 'install_packages.yml'. Podem incloure aquestes tasques al nostre manual principal de la següent manera:

- amfitrions: tots
tasques:
- nom: Actualitzar repositoris
apte:
update_cache: sí
- nom: Inclou tasca per instal·lar paquets
ansible.builtin.include_tasks:
fitxer: install_packages.yml

En aquest cas, diem a Ansible que carregui les tasques que es defineixen al llibre de jugades 'install_packages.yml' i les executi al llibre de jocs actual.

Podem tenir el fitxer 'install_packages.yml' que es defineix de la següent manera:

- nom: Instal·leu Apache
apte:
nom: apache2
estat: present
- nom: instal·leu Nginx
apte:
nom: nginx
estat: present

Ús de Include_Tasks amb variables

També podem utilitzar les variables amb el mòdul include_tasks. Les variables ens permeten controlar de manera dinàmica quines tasques s'inclouen en funció d'una condició o entrada diferent.

- amfitrions: tots
tasques:
- nom: inclou la llista de tasques en joc només si la condició és certa
ansible.builtin.include_tasks: '{{ hostvar }}.yaml'
quan: hostvar està definit

Inclou fitxers de tasques múltiples

Ansible també ens permet utilitzar include_tasks en un bucle per incloure diversos fitxers de tasques. Suposem que tenim fitxers separats per instal·lar Apache, Nginx i MySQL. Podem repetir-los de la següent manera:

- hosts: nodes
tasques:
- nom: Actualitzar repositoris
apte:
update_cache: sí
- nom: Inclou tasca per instal·lar programari
include_tasks: '{{ element }}'
bucle:
- install_apache.yml
- install_nginx.yml
- install_mysql.yml

En aquest cas, Ansible itera cada tasca que es defineix als fitxers i les executa individualment.

Conclusió

Explorem el funcionament de la directiva include_tasks a Ansible per carregar dinàmicament les tasques que es defineixen en altres fitxers. A hores d'ara, hauríeu de tenir una comprensió sòlida sobre com desglossar els llibres de joc complexos en trossos manejables i importar-los quan sigui necessari.