Els fitxers d'inventari són una part fonamental d'Ansible, ja que defineixen els hosts i grups de hosts sobre els quals es realitzaran les operacions. En aquest tema, aprendrem què són els fitxers d'inventari, com crear-los i com utilitzar-los en les nostres tasques d'Ansible.
Què és un fitxer d'inventari?
Un fitxer d'inventari és un document que conté una llista de nodes (hosts) que Ansible gestionarà. Aquests fitxers poden ser tan simples com una llista de noms de hosts o tan complexos com una estructura jeràrquica que inclou grups de hosts, variables específiques per a cada host, etc.
Exemple bàsic d'un fitxer d'inventari
# inventari.ini [webservers] web1.example.com web2.example.com [dbservers] db1.example.com db2.example.com
En aquest exemple, tenim dos grups de hosts: webservers
i dbservers
. Cada grup conté dos hosts.
Creant un fitxer d'inventari
Format INI
El format més comú per als fitxers d'inventari és el format INI. Aquí teniu un exemple més detallat:
# inventari.ini [webservers] web1.example.com ansible_user=admin ansible_port=2222 web2.example.com ansible_user=admin ansible_port=2222 [dbservers] db1.example.com ansible_user=root db2.example.com ansible_user=root [all:vars] ansible_python_interpreter=/usr/bin/python3
En aquest exemple:
web1.example.com
iweb2.example.com
tenen usuaris i ports específics.db1.example.com
idb2.example.com
utilitzen l'usuariroot
.- La secció
[all:vars]
defineix variables globals per a tots els hosts.
Format YAML
També es poden utilitzar fitxers d'inventari en format YAML, que poden ser més llegibles i estructurats:
# inventari.yml all: vars: ansible_python_interpreter: /usr/bin/python3 children: webservers: hosts: web1.example.com: ansible_user: admin ansible_port: 2222 web2.example.com: ansible_user: admin ansible_port: 2222 dbservers: hosts: db1.example.com: ansible_user: root db2.example.com: ansible_user: root
Utilitzant fitxers d'inventari
Per utilitzar un fitxer d'inventari amb Ansible, simplement hem d'especificar el fitxer amb l'opció -i
en les nostres comandes. Per exemple:
Aquest comandament farà un ping a tots els hosts definits en el fitxer inventari.ini
.
Exercicis pràctics
Exercici 1: Crear un fitxer d'inventari bàsic
-
Crea un fitxer anomenat
inventari.ini
amb el següent contingut:[webservers] web1.local web2.local [dbservers] db1.local db2.local
-
Utilitza la comanda
ansible
per fer un ping a tots els hosts:ansible all -i inventari.ini -m ping
Exercici 2: Afegir variables a un fitxer d'inventari
-
Modifica el fitxer
inventari.ini
per afegir usuaris i ports específics:[webservers] web1.local ansible_user=admin ansible_port=2222 web2.local ansible_user=admin ansible_port=2222 [dbservers] db1.local ansible_user=root db2.local ansible_user=root [all:vars] ansible_python_interpreter=/usr/bin/python3
-
Torna a fer un ping a tots els hosts per assegurar-te que les variables s'apliquen correctament:
ansible all -i inventari.ini -m ping
Errors comuns i consells
- Error: "Host unreachable": Assegura't que els noms dels hosts són correctes i que els hosts són accessibles des de la màquina on s'executa Ansible.
- Error: "Permission denied": Verifica que l'usuari especificat té els permisos necessaris per accedir als hosts.
- Consell: Utilitza variables globals en la secció
[all:vars]
per evitar repetir configuracions comunes en múltiples hosts.
Conclusió
Els fitxers d'inventari són essencials per gestionar els hosts amb Ansible. Hem après a crear fitxers d'inventari en formats INI i YAML, a afegir variables específiques per a cada host i a utilitzar aquests fitxers en les nostres comandes d'Ansible. Amb aquesta base, estem preparats per avançar cap a conceptes més avançats d'Ansible.
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