En esta sección, aprenderás cómo configurar Ansible para que funcione de manera óptima en tu entorno. La configuración de Ansible se realiza principalmente a través de un archivo de configuración llamado ansible.cfg. Este archivo permite ajustar una variedad de parámetros que afectan el comportamiento de Ansible.

Contenido

Ubicación del archivo de configuración

Ansible busca el archivo de configuración ansible.cfg en las siguientes ubicaciones, en orden de prioridad:

  1. En el directorio actual donde se ejecuta el comando Ansible.
  2. En el directorio especificado por la variable de entorno ANSIBLE_CONFIG.
  3. En el directorio de inicio del usuario (~/.ansible.cfg).
  4. En el directorio de instalación de Ansible (/etc/ansible/ansible.cfg).

Estructura del archivo ansible.cfg

El archivo ansible.cfg está dividido en secciones, cada una de las cuales contiene parámetros específicos. Las secciones más comunes son:

  • [defaults]: Configuración predeterminada para todos los comandos de Ansible.
  • [privilege_escalation]: Configuración para la escalada de privilegios (por ejemplo, sudo).
  • [ssh_connection]: Configuración específica para conexiones SSH.
  • [paramiko_connection]: Configuración específica para conexiones usando Paramiko.
  • [inventory]: Configuración relacionada con el inventario.

Parámetros comunes de configuración

Sección [defaults]

  • inventory: Especifica la ruta al archivo de inventario.
  • remote_user: Usuario predeterminado para las conexiones remotas.
  • ask_pass: Si se debe solicitar la contraseña SSH.
  • ask_become_pass: Si se debe solicitar la contraseña para la escalada de privilegios.
  • host_key_checking: Habilita o deshabilita la verificación de la clave del host SSH.
  • timeout: Tiempo de espera para las conexiones SSH.

Sección [privilege_escalation]

  • become: Habilita o deshabilita la escalada de privilegios.
  • become_method: Método de escalada de privilegios (por ejemplo, sudo).
  • become_user: Usuario al que se cambiará al escalar privilegios.
  • become_ask_pass: Si se debe solicitar la contraseña para la escalada de privilegios.

Sección [ssh_connection]

  • ssh_args: Argumentos adicionales para el comando SSH.
  • control_path: Ruta para los sockets de control persistente SSH.
  • pipelining: Habilita o deshabilita el uso de pipelining para mejorar el rendimiento.

Ejemplo de archivo ansible.cfg

[defaults]
inventory = ./hosts
remote_user = ansible
ask_pass = false
ask_become_pass = true
host_key_checking = false
timeout = 30

[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = true

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
control_path = ~/.ssh/ansible-%%h-%%r
pipelining = true

Ejercicio práctico

Ejercicio 1: Crear y configurar un archivo ansible.cfg

  1. Crea un archivo ansible.cfg en tu directorio de trabajo actual.
  2. Configura el archivo con los siguientes parámetros:
    • Inventario en ./inventory
    • Usuario remoto ansible
    • Deshabilitar la verificación de la clave del host SSH
    • Habilitar la escalada de privilegios usando sudo
    • Habilitar pipelining para mejorar el rendimiento

Solución

[defaults]
inventory = ./inventory
remote_user = ansible
host_key_checking = false

[privilege_escalation]
become = true
become_method = sudo

[ssh_connection]
pipelining = true

Retroalimentación

  • Error común: Olvidar deshabilitar la verificación de la clave del host SSH (host_key_checking = false). Esto puede causar problemas si los hosts no están en el archivo known_hosts.
  • Consejo: Siempre verifica que los parámetros en el archivo ansible.cfg sean correctos y estén en la sección adecuada.

Conclusión

En esta sección, has aprendido cómo configurar Ansible utilizando el archivo ansible.cfg. Has visto las ubicaciones donde Ansible busca este archivo, la estructura del archivo y algunos de los parámetros más comunes que puedes configurar. Además, has practicado creando y configurando tu propio archivo ansible.cfg.

En la próxima sección, exploraremos los comandos Ad-Hoc de Ansible, que te permitirán ejecutar tareas rápidas sin necesidad de escribir un playbook completo.

© Copyright 2024. Todos los derechos reservados