Introducció
L'inventari dinàmic en Ansible permet gestionar hosts i grups de manera més flexible i automatitzada, especialment útil en entorns dinàmics com els entorns cloud, on els recursos poden canviar freqüentment. A diferència dels fitxers d'inventari estàtics, els inventaris dinàmics es generen en temps real mitjançant scripts o connectors que recuperen informació dels sistemes de gestió de recursos.
Conceptes Clau
- Inventari Estàtic: Un fitxer d'inventari estàtic és un fitxer de text que conté una llista de hosts i grups.
- Inventari Dinàmic: Un inventari dinàmic es genera en temps real mitjançant un script o connector que recupera informació dels sistemes de gestió de recursos.
- Scripts d'Inventari Dinàmic: Scripts que es poden escriure en qualsevol llenguatge de programació i que retornen informació en format JSON.
- Connectors d'Inventari Dinàmic: Connectors predefinits que Ansible proporciona per integrar-se amb serveis com AWS, GCP, Azure, etc.
Avantatges de l'Inventari Dinàmic
- Actualització Automàtica: Els inventaris dinàmics es generen en temps real, assegurant que sempre es treballa amb la informació més actualitzada.
- Escalabilitat: Facilita la gestió de grans quantitats de recursos que poden canviar freqüentment.
- Integració: Permet integrar-se fàcilment amb serveis de cloud i altres sistemes de gestió de recursos.
Configuració d'un Inventari Dinàmic
- Utilitzant un Script d'Inventari Dinàmic
Exemple de Script d'Inventari Dinàmic
A continuació es mostra un exemple d'un script d'inventari dinàmic en Python que retorna informació en format JSON:
#!/usr/bin/env python import json def get_inventory(): inventory = { "all": { "hosts": ["host1.example.com", "host2.example.com"], "vars": { "ansible_user": "admin" } }, "_meta": { "hostvars": { "host1.example.com": { "ansible_host": "192.168.1.1" }, "host2.example.com": { "ansible_host": "192.168.1.2" } } } } return inventory if __name__ == "__main__": print(json.dumps(get_inventory()))
Passos per Utilitzar l'Script
- Crear l'Script: Guarda l'script anterior en un fitxer, per exemple
dynamic_inventory.py
. - Fer Executable l'Script: Assegura't que l'script tingui permisos d'execució.
chmod +x dynamic_inventory.py
- Executar l'Script: Prova l'script per assegurar-te que retorna la informació correcta.
./dynamic_inventory.py
- Utilitzant Connectors d'Inventari Dinàmic
Ansible proporciona connectors per a diversos serveis de cloud. A continuació es mostra un exemple d'ús del connector per AWS.
Configuració del Connector AWS
-
Instal·lar les Dependències:
pip install boto boto3
-
Configurar el Fitxer d'Inventari: Crea un fitxer
aws_ec2.yml
amb el següent contingut:plugin: aws_ec2 regions: - us-east-1 filters: instance-state-name: running keyed_groups: - key: tags.Name prefix: 'tag_'
-
Executar Ansible amb el Connector:
ansible-inventory -i aws_ec2.yml --graph
Exercici Pràctic
Objectiu
Crear un script d'inventari dinàmic que llisti els hosts d'una xarxa local i utilitzar-lo en un playbook d'Ansible.
Passos
-
Crear l'Script d'Inventari Dinàmic:
# dynamic_inventory.py import json def get_inventory(): inventory = { "all": { "hosts": ["host1.local", "host2.local"], "vars": { "ansible_user": "user" } }, "_meta": { "hostvars": { "host1.local": { "ansible_host": "192.168.0.101" }, "host2.local": { "ansible_host": "192.168.0.102" } } } } return inventory if __name__ == "__main__": print(json.dumps(get_inventory()))
-
Fer Executable l'Script:
chmod +x dynamic_inventory.py
-
Crear un Playbook d'Ansible:
# playbook.yml - name: Test Dynamic Inventory hosts: all tasks: - name: Ping hosts ping:
-
Executar el Playbook amb l'Inventari Dinàmic:
ansible-playbook -i dynamic_inventory.py playbook.yml
Solució
L'script d'inventari dinàmic i el playbook haurien de funcionar correctament, retornant un ping exitós per als hosts especificats.
Conclusió
L'inventari dinàmic en Ansible és una eina poderosa per gestionar entorns dinàmics i escalables. Mitjançant scripts personalitzats o connectors predefinits, es pot assegurar que sempre es treballa amb la informació més actualitzada dels recursos disponibles. Aquesta flexibilitat és especialment útil en entorns cloud i altres sistemes de gestió de recursos dinàmics.
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