Introducción

En Ansible, los archivos de inventario son fundamentales para definir los hosts y grupos de hosts sobre los cuales se ejecutarán las tareas. Un archivo de inventario puede ser tan simple como una lista de nombres de host o tan complejo como un archivo YAML que define grupos, variables y más.

Contenido

  1. ¿Qué es un archivo de inventario?
  2. Formato de un archivo de inventario
  3. Definición de grupos y hosts
  4. Variables de host y grupo
  5. Ejemplos prácticos
  6. Ejercicio práctico

  1. ¿Qué es un archivo de inventario?

Un archivo de inventario en Ansible es un archivo que contiene información sobre los sistemas remotos que Ansible gestionará. Este archivo puede estar en formato INI o YAML y puede incluir detalles como nombres de host, direcciones IP, grupos de hosts y variables específicas.

  1. Formato de un archivo de inventario

Formato INI

El formato INI es el más común y sencillo. Aquí hay un ejemplo básico:

# hosts.ini
[webservers]
web1.example.com
web2.example.com

[dbservers]
db1.example.com
db2.example.com

Formato YAML

El formato YAML es más estructurado y permite una mayor flexibilidad:

# hosts.yml
all:
  children:
    webservers:
      hosts:
        web1.example.com:
        web2.example.com:
    dbservers:
      hosts:
        db1.example.com:
        db2.example.com:

  1. Definición de grupos y hosts

Grupos

Los grupos permiten organizar hosts que comparten características comunes. En el ejemplo INI anterior, webservers y dbservers son grupos.

Hosts

Los hosts son los sistemas individuales que Ansible gestionará. Pueden ser definidos por su nombre de host o dirección IP.

# hosts.ini
[webservers]
192.168.1.10
192.168.1.11

  1. Variables de host y grupo

Las variables permiten definir configuraciones específicas para hosts o grupos de hosts. Estas variables pueden ser utilizadas en los playbooks para personalizar la ejecución de tareas.

Variables de Host

# hosts.ini
[webservers]
web1.example.com ansible_user=admin ansible_port=2222
web2.example.com ansible_user=admin ansible_port=2222

Variables de Grupo

# hosts.ini
[webservers]
web1.example.com
web2.example.com

[webservers:vars]
ansible_user=admin
ansible_port=2222

Variables en Formato YAML

# hosts.yml
all:
  children:
    webservers:
      hosts:
        web1.example.com:
        web2.example.com:
      vars:
        ansible_user: admin
        ansible_port: 2222

  1. Ejemplos prácticos

Ejemplo 1: Archivo de Inventario INI

# hosts.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_ssh_private_key_file=~/.ssh/id_rsa

Ejemplo 2: Archivo de Inventario YAML

# hosts.yml
all:
  vars:
    ansible_ssh_private_key_file: ~/.ssh/id_rsa
  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

  1. Ejercicio práctico

Ejercicio

  1. Crea un archivo de inventario en formato INI que contenga dos grupos: appservers y dbservers.
  2. Define dos hosts en cada grupo.
  3. Asigna variables específicas a cada grupo, como el usuario SSH y el puerto.

Solución

# hosts.ini
[appservers]
app1.example.com ansible_user=deploy ansible_port=2200
app2.example.com ansible_user=deploy ansible_port=2200

[dbservers]
db1.example.com ansible_user=root ansible_port=3306
db2.example.com ansible_user=root ansible_port=3306

[all:vars]
ansible_ssh_private_key_file=~/.ssh/id_rsa

Conclusión

Los archivos de inventario son una parte esencial de Ansible, permitiendo definir y organizar los hosts y grupos de hosts que serán gestionados. Comprender cómo estructurar estos archivos y utilizar variables es crucial para aprovechar al máximo las capacidades de Ansible. En el próximo tema, exploraremos cómo configurar Ansible para que funcione de manera óptima en tu entorno.

© Copyright 2024. Todos los derechos reservados