Introducción

Ansible es una herramienta de automatización de TI que permite la gestión de configuraciones, la implementación de aplicaciones y la ejecución de tareas de administración de sistemas de manera sencilla y eficiente. Ansible utiliza un lenguaje de configuración simple basado en YAML, lo que facilita la escritura y comprensión de scripts de automatización.

Objetivos de esta sección:

  1. Comprender qué es Ansible y sus componentes principales.
  2. Instalar y configurar Ansible.
  3. Crear y ejecutar playbooks de Ansible.
  4. Gestionar inventarios y variables.
  5. Utilizar roles y módulos de Ansible.
  6. Implementar tareas avanzadas y manejar errores.

  1. ¿Qué es Ansible?

Ansible es una herramienta de automatización de código abierto que permite la gestión de configuraciones, la implementación de aplicaciones y la orquestación de tareas. A diferencia de otras herramientas de automatización, Ansible no requiere agentes en los nodos administrados, lo que simplifica su uso y mantenimiento.

Componentes principales de Ansible:

  • Control Node: El servidor desde el cual se ejecutan los comandos de Ansible.
  • Managed Nodes: Los servidores que Ansible gestiona.
  • Inventory: Un archivo que lista los nodos gestionados.
  • Playbooks: Archivos YAML que definen las tareas a realizar.
  • Modules: Unidades de trabajo que Ansible puede ejecutar.
  • Roles: Conjuntos de tareas y configuraciones reutilizables.

  1. Instalación y Configuración de Ansible

Instalación en una Distribución Basada en Debian (Ubuntu)

sudo apt update
sudo apt install ansible -y

Instalación en una Distribución Basada en Red Hat (CentOS)

sudo yum install epel-release -y
sudo yum install ansible -y

Verificación de la Instalación

ansible --version

  1. Creación y Ejecución de Playbooks

Un playbook en Ansible es un archivo YAML que contiene una serie de "plays". Cada "play" aplica un conjunto de tareas a un grupo de hosts.

Ejemplo de Playbook Básico

---
- name: Instalar y configurar Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Instalar Apache
      apt:
        name: apache2
        state: present
    - name: Iniciar el servicio de Apache
      service:
        name: apache2
        state: started

Ejecución del Playbook

ansible-playbook nombre_del_playbook.yml

  1. Gestión de Inventarios y Variables

Archivo de Inventario

El archivo de inventario define los hosts y grupos de hosts que Ansible gestionará.

[webservers]
web1.example.com
web2.example.com

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

Variables en Ansible

Las variables permiten personalizar las tareas en los playbooks.

---
- name: Instalar y configurar Apache con variables
  hosts: webservers
  become: yes
  vars:
    apache_package: apache2
  tasks:
    - name: Instalar Apache
      apt:
        name: "{{ apache_package }}"
        state: present
    - name: Iniciar el servicio de Apache
      service:
        name: "{{ apache_package }}"
        state: started

  1. Roles y Módulos de Ansible

Creación de Roles

Los roles permiten organizar los playbooks en estructuras reutilizables.

ansible-galaxy init nombre_del_rol

Uso de Módulos

Ansible incluye una amplia variedad de módulos para realizar tareas específicas.

- name: Crear un archivo
  file:
    path: /tmp/archivo.txt
    state: touch

  1. Tareas Avanzadas y Manejo de Errores

Tareas Condicionales

- name: Instalar Apache solo si no está instalado
  apt:
    name: apache2
    state: present
  when: ansible_facts['pkg_mgr'] == 'apt'

Manejo de Errores

- name: Intentar iniciar un servicio
  service:
    name: apache2
    state: started
  ignore_errors: yes

Ejercicio Práctico

Ejercicio: Configuración de un Servidor Web con Ansible

  1. Objetivo: Crear un playbook que instale y configure un servidor web Apache en un grupo de hosts.
  2. Pasos:
    • Crear un archivo de inventario con al menos un host.
    • Escribir un playbook que instale Apache, copie un archivo de configuración personalizado y asegure que el servicio esté iniciado.
    • Ejecutar el playbook y verificar que el servidor web esté funcionando.

Solución

Archivo de Inventario (hosts)

[webservers]
web1.example.com

Playbook (webserver.yml)

---
- name: Configurar servidor web Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Instalar Apache
      apt:
        name: apache2
        state: present
    - name: Copiar archivo de configuración personalizado
      copy:
        src: /path/to/local/apache2.conf
        dest: /etc/apache2/apache2.conf
    - name: Iniciar el servicio de Apache
      service:
        name: apache2
        state: started

Ejecución del Playbook

ansible-playbook -i hosts webserver.yml

Conclusión

En esta sección, hemos aprendido los conceptos básicos y avanzados de Ansible, desde su instalación hasta la creación y ejecución de playbooks, la gestión de inventarios y variables, y el uso de roles y módulos. Con estas habilidades, puedes automatizar una amplia variedad de tareas de administración de sistemas, mejorando la eficiencia y consistencia de tus operaciones de TI.

Maestría en Linux: De Principiante a Avanzado

Módulo 1: Introducción a Linux

Módulo 2: Comandos Básicos de Linux

Módulo 3: Habilidades Avanzadas en la Línea de Comandos

Módulo 4: Scripting en Shell

Módulo 5: Administración del Sistema

Módulo 6: Redes y Seguridad

Módulo 7: Temas Avanzados

Módulo 8: Proyectos Prácticos

© Copyright 2024. Todos los derechos reservados