En aquest tema, explorarem diverses tècniques i estratègies per optimitzar el rendiment dels teus playbooks i rols d'Ansible. L'objectiu és assegurar que les teves automatitzacions siguin el més eficients possible, reduint el temps d'execució i minimitzant l'ús de recursos.
- Introducció a l'Ajust de Rendiment
L'ajust de rendiment en Ansible implica identificar i eliminar colls d'ampolla, optimitzar l'ús de recursos i assegurar que les tasques es completen de la manera més eficient possible. Alguns dels aspectes clau a considerar són:
- Paral·lelisme: Executar tasques en paral·lel per reduir el temps total d'execució.
- Optimització de Playbooks: Escriure playbooks de manera que minimitzin les operacions innecessàries.
- Cache: Utilitzar mecanismes de cache per evitar la repetició de tasques costoses.
- Configuració del Controlador: Ajustar la configuració del controlador d'Ansible per millorar el rendiment.
- Paral·lelisme
2.1. Configuració de forks
Ansible permet executar tasques en paral·lel utilitzant el paràmetre forks
. Aquest paràmetre defineix el nombre de processos paral·lels que Ansible pot utilitzar.
2.2. Utilització de async
i poll
Per a tasques que poden trigar molt de temps, pots utilitzar async
i poll
per executar-les de manera asíncrona.
- name: Llarg procés command: /path/to/long_process async: 3600 poll: 0 - name: Esperar que el llarg procés acabi async_status: jid: "{{ long_process.ansible_job_id }}" register: job_result until: job_result.finished retries: 30 delay: 10
- Optimització de Playbooks
3.1. Evitar Tasques Innecessàries
Utilitza changed_when
i check_mode
per evitar l'execució de tasques innecessàries.
- name: Crear un fitxer només si no existeix command: touch /tmp/somefile args: creates: /tmp/somefile
3.2. Utilitzar gather_facts
de manera selectiva
Recollir fets pot ser costós. Si no necessites tots els fets, desactiva'ls o recull només els necessaris.
O recull només els fets necessaris:
- Cache
4.1. Cache de Fets
Utilitza la cache de fets per evitar recollir fets repetidament.
# ansible.cfg [defaults] fact_caching = jsonfile fact_caching_connection = /tmp/ansible_cache fact_caching_timeout = 86400
- Configuració del Controlador
5.1. Ajustar pipelining
Habilitar pipelining
pot reduir el nombre de connexions SSH necessàries per executar tasques.
5.2. Ajustar timeout
Ajustar el timeout
per a connexions SSH pot ajudar a evitar que les tasques fallin per temps d'espera.
Exercicis Pràctics
Exercici 1: Configurar forks
- Modifica el fitxer
ansible.cfg
per establirforks
a 15. - Executa un playbook que contingui diverses tasques i observa la diferència en el temps d'execució.
Exercici 2: Utilitzar async
i poll
- Escriu un playbook que executi una tasca llarga de manera asíncrona.
- Utilitza
async_status
per esperar que la tasca acabi.
Exercici 3: Cache de Fets
- Configura la cache de fets en el fitxer
ansible.cfg
. - Executa un playbook que reculli fets i observa com es comporta la cache.
Conclusió
L'ajust de rendiment és una part crucial per assegurar que les teves automatitzacions amb Ansible siguin eficients i ràpides. Mitjançant l'ús de paral·lelisme, optimització de playbooks, cache de fets i configuració adequada del controlador, pots millorar significativament el rendiment dels teus playbooks. Practica aquestes tècniques amb els exercicis proporcionats per consolidar els teus coneixements.
Ansible: De Principiant a Avançat
Mòdul 1: Introducció a Ansible
Mòdul 2: Conceptes bàsics d'Ansible
Mòdul 3: Playbooks
- Introducció als Playbooks
- Escrivint el teu primer Playbook
- Estructura del Playbook
- Variables i Fets
- Condicionals i Bucles
Mòdul 4: Rols
Mòdul 5: Tècniques Avançades de Playbook
Mòdul 6: Ansible Galaxy
Mòdul 7: Ansible Tower
- Introducció a Ansible Tower
- Instal·lant Ansible Tower
- Utilitzant Ansible Tower
- Gestionant Projectes i Inventaris