¿Cómo actualizar Ansible a la última versión?

AnsibleBeginner
Practicar Ahora

Introducción

Ansible es una poderosa herramienta de automatización de código abierto que ha ganado una amplia adopción en la industria de TI. A medida que Ansible evoluciona, es importante mantener su instalación actualizada para aprovechar las últimas características y mejoras. Este tutorial le guiará a través del proceso de actualización de Ansible a la última versión en Ubuntu, que es el sistema operativo utilizado en este entorno de laboratorio.

Comprender Ansible y Verificar su Versión Actual

Antes de actualizar Ansible, es útil comprender qué es Ansible y verificar qué versión tiene actualmente instalada.

¿Qué es Ansible?

Ansible es una plataforma de automatización de código abierto que simplifica la gestión de la configuración, el despliegue de aplicaciones y la automatización de tareas. Utiliza la sintaxis YAML para crear playbooks, que son documentos que describen el estado deseado de sus sistemas.

Algunos beneficios clave de Ansible incluyen:

  • Arquitectura sin agente (Agentless architecture): No es necesario instalar agentes en los nodos gestionados
  • Sintaxis simple: Utiliza archivos YAML legibles por humanos
  • Ejecución idempotente (Idempotent execution): Ejecutar el mismo playbook varias veces produce el mismo resultado
  • Extensible: Admite módulos y plugins personalizados

Verificando su Versión Actual de Ansible

Comencemos por verificar si Ansible ya está instalado y, en caso afirmativo, qué versión tiene. Abra una terminal y ejecute:

ansible --version

Debería ver una salida similar a esta:

ansible [core 2.12.0]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
  jinja version = 3.0.3
  libyaml = True

La primera línea muestra su versión actual de Ansible. Si no ve una salida como esta, es posible que Ansible aún no esté instalado, lo cual está bien porque lo instalaremos en el siguiente paso.

Comprender el Versionado de Ansible

Ansible sigue el versionado semántico (semantic versioning) con tres números: major.minor.patch

  • Versión principal (Major version): Cambios significativos que pueden requerir modificaciones en sus playbooks
  • Versión secundaria (Minor version): Nuevas características sin cambios que rompan la compatibilidad
  • Versión de parche (Patch version): Correcciones de errores y mejoras menores

Ahora que entendemos qué es Ansible y hemos verificado nuestra versión actual, estamos listos para proceder con la instalación o actualización de Ansible en el siguiente paso.

Instalación o Actualización de Ansible en Ubuntu

En este paso, instalaremos o actualizaremos Ansible en el sistema Ubuntu 22.04. Usaremos el PPA (Personal Package Archive) oficial de Ansible para obtener la última versión estable.

Añadiendo el Repositorio PPA de Ansible

Primero, necesitamos asegurarnos de tener la dependencia necesaria para agregar PPAs:

sudo apt update
sudo apt install -y software-properties-common

Este comando actualiza su índice de paquetes e instala el paquete software-properties-common, que proporciona el comando add-apt-repository.

Ahora, agreguemos el repositorio PPA oficial de Ansible:

sudo add-apt-repository --yes --update ppa:ansible/ansible

Verá una salida que muestra que el repositorio se ha agregado a su sistema. La bandera --yes confirma automáticamente la adición, y --update actualiza la lista de paquetes inmediatamente.

Instalando la Última Versión de Ansible

Con el repositorio agregado, ahora podemos instalar la última versión de Ansible:

sudo apt install -y ansible

La bandera -y confirma automáticamente la instalación sin solicitar confirmación.

Este comando instalará Ansible si aún no está presente o lo actualizará a la última versión disponible en el PPA.

Verificando la Instalación o Actualización

Después de que se complete la instalación, verifiquemos que Ansible esté instalado correctamente y comprobemos su versión:

ansible --version

La salida debería mostrar la última versión de Ansible disponible en el PPA. Si anteriormente tenía una versión anterior instalada, ahora debería ver un número de versión más reciente.

Para realizar un seguimiento de nuestro progreso para el script de verificación, creemos un archivo marcador:

touch /tmp/ansible_version_checked
touch /tmp/ansible_installed

Ahora hemos instalado o actualizado Ansible con éxito en nuestro sistema Ubuntu. En el siguiente paso, exploraremos cómo usar algunos comandos básicos de Ansible para verificar que nuestra instalación funcione correctamente.

Verificando su Instalación de Ansible con un Playbook Simple

Ahora que Ansible está instalado, confirmemos que funciona correctamente creando y ejecutando un playbook simple. Los playbooks son archivos YAML que describen el estado deseado de sus sistemas y las tareas que Ansible debe realizar para alcanzar ese estado.

Creando un Playbook de Prueba

Primero, creemos un directorio para nuestro proyecto Ansible:

mkdir -p ~/project/ansible-test
cd ~/project/ansible-test

Ahora, creemos un playbook simple usando el editor de código integrado. En el WebIDE, haga clic en el icono "Explorer" en la barra lateral izquierda, navegue hasta el directorio ansible-test que acabamos de crear y cree un nuevo archivo llamado test-playbook.yml.

Agregue el siguiente contenido a este archivo:

---
- name: Test Ansible Installation
  hosts: localhost
  connection: local
  gather_facts: no

  tasks:
    - name: Print a message
      debug:
        msg: "Ansible is installed and working correctly!"

    - name: Get Ansible version
      command: ansible --version
      register: ansible_version_output

    - name: Display Ansible version
      debug:
        msg: "{{ ansible_version_output.stdout_lines[0] }}"

    - name: Create a test file
      file:
        path: /tmp/ansible-test-file.txt
        state: touch
        mode: "0644"

Este playbook hace lo siguiente:

  1. Se dirige a la máquina local (localhost)
  2. Imprime un mensaje de éxito
  3. Recupera y muestra la versión de Ansible
  4. Crea un archivo de prueba en /tmp/ansible-test-file.txt

Ejecutando el Playbook

Ahora ejecutemos el playbook para verificar que Ansible funciona correctamente:

cd ~/project/ansible-test
ansible-playbook test-playbook.yml

Debería ver una salida similar a esta:

PLAY [Test Ansible Installation] ***********************************************

TASK [Print a message] *********************************************************
ok: [localhost] => {
    "msg": "Ansible is installed and working correctly!"
}

TASK [Get Ansible version] *****************************************************
changed: [localhost]

TASK [Display Ansible version] *************************************************
ok: [localhost] => {
    "msg": "ansible [core 2.12.0]"
}

TASK [Create a test file] ******************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

La salida muestra que todas las tareas se completaron con éxito. El changed=2 en el resumen indica que dos tareas realizaron cambios en el sistema (obtener la versión y crear el archivo).

Verificando el Archivo de Prueba

Verifiquemos si el archivo de prueba fue creado:

ls -l /tmp/ansible-test-file.txt

Debería ver el archivo listado con los permisos que especificamos:

-rw-r--r-- 1 labex labex 0 Aug 30 12:34 /tmp/ansible-test-file.txt

Marquemos este paso como completo para nuestro script de verificación:

touch /tmp/ansible_playbook_tested

¡Felicitaciones! Ha instalado con éxito la última versión de Ansible y ha verificado que funciona correctamente ejecutando un playbook simple. Esto confirma que su instalación de Ansible es completamente funcional y está lista para su uso.

Comprensión de la Configuración y los Módulos de Ansible

Ahora que tenemos Ansible instalado y funcionando, exploremos su configuración y el concepto de módulos.

Configuración de Ansible

Ansible utiliza archivos de configuración para controlar su comportamiento. El archivo de configuración principal es ansible.cfg, que puede existir en varias ubicaciones. Examinemos el archivo de configuración predeterminado:

ls -la /etc/ansible/

Debería ver la estructura de directorio predeterminada de Ansible:

total 20
drwxr-xr-x  2 root root 4096 Aug 30 12:00 .
drwxr-xr-x 85 root root 4096 Aug 30 12:00 ..
-rw-r--r--  1 root root 8669 Aug 30 12:00 ansible.cfg
-rw-r--r--  1 root root 1021 Aug 30 12:00 hosts

Echemos un vistazo al archivo hosts, que es el archivo de inventario predeterminado:

cat /etc/ansible/hosts

El archivo de inventario contiene una lista de hosts que Ansible puede administrar. De forma predeterminada, contiene ejemplos que están comentados.

Creando una Configuración Personalizada

Creemos nuestro propio archivo de configuración de Ansible en nuestro directorio de proyecto. En el WebIDE, cree un nuevo archivo llamado ansible.cfg en el directorio ~/project/ansible-test con el siguiente contenido:

[defaults]
inventory = ./inventory
host_key_checking = False
stdout_callback = yaml

Ahora, creemos un archivo de inventario simple. En el WebIDE, cree un nuevo archivo llamado inventory en el directorio ~/project/ansible-test con el siguiente contenido:

[local]
localhost ansible_connection=local

Explorando los Módulos de Ansible

Los módulos de Ansible son unidades de código reutilizables que realizan tareas específicas. Exploremos algunos de los módulos disponibles:

ansible-doc -l | wc -l

Este comando enumera todos los módulos disponibles y los cuenta. Debería ver un número grande, típicamente más de 1000 módulos.

Veamos la documentación de un módulo específico, como el módulo file que usamos en nuestro playbook:

ansible-doc file

Puede presionar q para salir del visor de documentación.

Creando un Playbook Más Complejo

Ahora, creemos un playbook más avanzado que demuestre algunos módulos más de Ansible. En el WebIDE, cree un nuevo archivo llamado modules-demo.yml en el directorio ~/project/ansible-test con el siguiente contenido:

---
- name: Ansible Modules Demo
  hosts: localhost
  connection: local
  gather_facts: yes

  tasks:
    - name: Display system information
      debug:
        msg: "System: {{ ansible_distribution }} {{ ansible_distribution_version }}"

    - name: Create a directory
      file:
        path: /tmp/ansible-demo
        state: directory
        mode: "0755"

    - name: Copy a file
      copy:
        content: "Created by Ansible modules demo playbook\n"
        dest: /tmp/ansible-demo/info.txt
        mode: "0644"

    - name: Gather information about a file
      stat:
        path: /tmp/ansible-demo/info.txt
      register: file_info

    - name: Show file information
      debug:
        msg: "File created at {{ file_info.stat.mtime }}"

Ejecutemos este playbook:

cd ~/project/ansible-test
ansible-playbook modules-demo.yml

El playbook hace lo siguiente:

  1. Muestra información sobre su sistema
  2. Crea un directorio en /tmp/ansible-demo
  3. Crea un archivo con contenido personalizado
  4. Recopila información sobre el archivo
  5. Muestra la hora de modificación del archivo

Marquemos este paso como completo para nuestro script de verificación:

touch /tmp/ansible_modules_explored

Ahora ha aprendido sobre la configuración de Ansible, los archivos de inventario y ha explorado varios módulos. Estos son componentes esenciales para trabajar con Ansible de manera efectiva.

Resumen

En este laboratorio, ha aprendido con éxito cómo instalar y actualizar Ansible a la última versión en un sistema Ubuntu. Ha logrado varias tareas clave:

  1. Comprendió los conceptos básicos de Ansible y su sistema de versionado
  2. Instaló o actualizó Ansible utilizando el repositorio PPA oficial
  3. Verificó su instalación creando y ejecutando un playbook simple
  4. Exploró los archivos de configuración de Ansible y la gestión de inventario
  5. Aprendió sobre los módulos de Ansible y su documentación
  6. Creó y ejecutó playbooks más complejos para realizar diversas tareas

Estas habilidades proporcionan una base sólida para trabajar con Ansible en proyectos de automatización. Al mantener su instalación de Ansible actualizada, puede aprovechar las últimas funciones, correcciones de errores y actualizaciones de seguridad.

A medida que continúe su viaje con Ansible, puede explorar temas más avanzados como roles, colecciones y Ansible AWX/Tower para la gestión empresarial. Estas herramientas le ayudarán a construir flujos de trabajo de automatización más sofisticados y a gestionar la infraestructura a escala.