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/somefile3.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.cfgper establirforksa 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_statusper 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
