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 i web2.example.com tenen usuaris i ports específics.
  • db1.example.com i db2.example.com utilitzen l'usuari root.
  • 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:

ansible all -i inventari.ini -m ping

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

  1. Crea un fitxer anomenat inventari.ini amb el següent contingut:

    [webservers]
    web1.local
    web2.local
    
    [dbservers]
    db1.local
    db2.local
    
  2. 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

  1. 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
    
  2. 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.

© Copyright 2024. Tots els drets reservats