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:
- En el directorio actual donde se ejecuta el comando Ansible.
- En el directorio especificado por la variable de entorno
ANSIBLE_CONFIG
. - En el directorio de inicio del usuario (
~/.ansible.cfg
). - 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
- Crea un archivo
ansible.cfg
en tu directorio de trabajo actual. - 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
- Inventario en
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 archivoknown_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.
Ansible: De Principiante a Avanzado
Módulo 1: Introducción a Ansible
Módulo 2: Conceptos Básicos de Ansible
Módulo 3: Playbooks
- Introducción a los Playbooks
- Escribiendo tu Primer Playbook
- Estructura del Playbook
- Variables y Hechos
- Condicionales y Bucles
Módulo 4: Roles
Módulo 5: Técnicas Avanzadas de Playbook
Módulo 6: Ansible Galaxy
Módulo 7: Ansible Tower
- Introducción a Ansible Tower
- Instalando Ansible Tower
- Usando Ansible Tower
- Gestionando Proyectos e Inventarios
Módulo 8: Ansible para DevOps
Módulo 9: Mejores Prácticas de Ansible
- Organización del Código
- Mejores Prácticas de Seguridad
- Ajuste de Rendimiento
- Pruebas de Código Ansible