Curso Ansible: Manejo de Inventarios
El inventario en Ansible es una lista de nodos, también conocidos como hosts, que son administrados por Ansible. Los inventarios pueden ser tan simples como un archivo de texto con una lista de hosts o tan complejos como un inventario dinámico generado desde un servicio en la nube.
En esta entrada de blog, exploraremos los conceptos básicos de los inventarios en Ansible, cómo crear y gestionar inventarios estáticos y dinámicos, y proporcionaremos ejemplos detallados para facilitar su comprensión.
¿Qué es un Inventario en Ansible?
Un inventario es un archivo que contiene información sobre los hosts que Ansible va a gestionar. Este archivo puede estar en formato INI, YAML o JSON, y define grupos de hosts, sus variables, y sus relaciones.
Tipos de Inventarios
- Inventario Estático: Es un archivo de texto que contiene la lista de hosts y grupos. Es fácil de crear y gestionar manualmente.
- Inventario Dinámico: Se genera dinámicamente desde una fuente externa, como un servicio en la nube (AWS, GCP, Azure) o una base de datos. Permite gestionar infraestructuras dinámicas de manera eficiente.
Inventarios Estáticos
Los inventarios estáticos son archivos simples que se pueden escribir en formato INI o YAML. Aquí tienes ejemplos de ambos formatos.
Formato INI
El formato INI es el formato de inventario más común y fácil de leer.
1 2 3 4 5 6 7 8 9 10 11 |
[webservers] web1.example.com web2.example.com [databases] db1.example.com db2.example.com [all:vars] ansible_user=admin ansible_ssh_private_key_file=~/.ssh/id_rsa |
Formato YAML
El formato YAML es más estructurado y se recomienda para inventarios más complejos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
all: vars: ansible_user: admin ansible_ssh_private_key_file: ~/.ssh/id_rsa children: webservers: hosts: web1.example.com: web2.example.com: databases: hosts: db1.example.com: db2.example.com: |
Este ejemplo define la misma estructura que el archivo INI pero en formato YAML.
Inventarios Dinámicos
Los inventarios dinámicos se generan a partir de fuentes externas. Ansible proporciona scripts de inventario dinámico para varias plataformas en la nube y otras fuentes. Aquí hay un ejemplo básico de cómo configurar un inventario dinámico para AWS.
Configuración de Inventario Dinámico para AWS
- Instalar boto3:
1 |
pip install boto3 |
- Descargar el script de inventario dinámico de AWS:
1 2 |
wget https://raw.githubusercontent.com/ansible/ansible/stable-2.9/contrib/inventory/ec2.py chmod +x ec2.py |
- Configurar credenciales de AWS:
1 2 |
export AWS_ACCESS_KEY_ID='your_access_key' export AWS_SECRET_ACCESS_KEY='your_secret_key' |
- Ejecutar el inventario dinámico:
1 |
ansible -i ec2.py all --list-hosts |
Variables en Inventarios
Las variables se pueden definir a diferentes niveles en los inventarios:
- Variables de Host: Se aplican a un host específico.
- Variables de Grupo: Se aplican a todos los hosts en un grupo.
- Variables Globales: Se aplican a todos los hosts en el inventario.
Ejemplo de Variables en Inventarios
1 2 3 4 5 6 7 8 9 10 |
[webservers] web1.example.com ansible_user=webadmin web2.example.com ansible_user=webadmin [databases] db1.example.com ansible_user=dbadmin db2.example.com ansible_user=dbadmin [all:vars] ansible_ssh_private_key_file=~/.ssh/id_rsa |
Usar Inventarios en Playbooks
Para utilizar un inventario en un Playbook, simplemente se especifica el archivo de inventario con la opción -i al ejecutar ansible-playbook.
1 |
ansible-playbook -i inventory.ini playbook.yml |
Ejecución de Playbooks Ansible
Para ejecutar un Playbook, se utiliza el comando “ansible-playbook” seguido del nombre del archivo del Playbook.
1 |
ansible-playbook playbook.yml |
ENTRADAS RELACIONADAS CURSO ANSIBLE
- Curso Ansible: Qué es y para qué sirve
- Curso Ansible: Instalación, configuración inicial y ejemplo práctico básico
- Curso Ansible: Puertos de comunicación necesarios
- Curso Ansible: Playbooks conceptos básicos
- Curso Ansible: Manejo de Inventarios
- Curso Ansible: Manejo de Variables
- Curso Ansible: definición y uso de Roles
- Curso Ansible: qué son los Handlers
- Curso Ansible: Condicionales y bucles
- Curso Ansible: Gestión de secretos y credenciales con Ansible Vault
- Curso Ansible: Uso de roles de la comunidad con Ansible Galaxy
- Curso Ansible: Despliegue de aplicaciones en contenedores con Ansible
- Curso Ansible: Integración de Ansible con CI/CD pipelines
- Curso Ansible: Generar ficheros YAML
- Curso Ansible: Integración de Ansible con Terraform para gestionar Proxmox
- Curso Ansible: Provisioners de Ansible en Terraform
- Curso Ansible: Hecho o Fact
- Curso Ansible: Optimización y buenas prácticas
OTRAS ENTRADAS RELACIONADAS ANSIBLE
- Ansible: Conceptos básicos
- Ansible: Comandos básicos
- Instalar Ansible en Centos 7
- Ansible: Gestión básica máquinas virtuales Proxmox
- MacOS: Instalar Podman y Ansible
- Docker Swarm: Instalar Ansible AWX
- Ansible: Validar ficheros YAML
- Ansible: Instalar SQL Server 2019 en Linux
- Ansible: Crear página web WordPress
- Ansible: Instalación servidores web
- Ansible: Gestión de máquina Windows
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?