Introducción
Ansible es una poderosa herramienta de automatización de TI que simplifica la gestión y la implementación de infraestructuras. Sin embargo, cuando se trabaja con hosts remotos, la comprobación de claves de host predeterminada de Ansible puede crear desafíos en ocasiones. Este tutorial lo guiará a través del proceso de deshabilitar la comprobación de claves de host en Ansible, asegurando una experiencia de automatización fluida y eficiente.
Comprensión de la comprobación de claves de host
La comprobación de claves de host es una característica de seguridad en Ansible que ayuda a verificar la identidad de los hosts remotos a los que te estás conectando. Cuando te conectas a un host remoto por primera vez, Ansible almacenará la clave pública del host en un archivo known_hosts. En conexiones posteriores, Ansible comparará la clave pública del host con la que está almacenada en el archivo known_hosts para asegurarse de que el host remoto es el mismo al que te conectaste previamente.
Este proceso ayuda a prevenir ataques de intermediario (man-in-the-middle), en los que un atacante podría interceptar tu conexión e impersonar el host remoto. Al verificar la identidad del host, Ansible puede asegurarse de que estás comunicándote con el host remoto correcto.
Sin embargo, en algunos casos, es posible que desees deshabilitar la comprobación de claves de host, por ejemplo, cuando trabajes con hosts efímeros o aprovisionados dinámicamente, o cuando estés probando tus playbooks de Ansible. Deshabilitar la comprobación de claves de host puede hacer que el proceso de conexión sea más rápido y conveniente, pero también aumenta el riesgo de un ataque de intermediario.
graph LR
A[Cliente] -- Conectar --> B[Host Remoto]
B -- Clave Pública --> A
A -- Verificar Clave Pública --> C[Archivo de Hosts Conocidos]
| Acción | Descripción |
|---|---|
| Conectar | El cliente se conecta al host remoto. |
| Clave Pública | El host remoto envía su clave pública al cliente. |
| Verificar Clave Pública | El cliente compara la clave pública recibida con la que está almacenada en el archivo known_hosts. |
Deshabilitar la comprobación de claves de host
Para deshabilitar la comprobación de claves de host en Ansible, puedes utilizar los siguientes métodos:
Variable de entorno
Puedes establecer la variable de entorno ANSIBLE_HOST_KEY_CHECKING en False para deshabilitar la comprobación de claves de host de forma global:
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook my_playbook.yml
Archivo de configuración de Ansible
También puedes deshabilitar la comprobación de claves de host estableciendo la opción host_key_checking en el archivo de configuración de Ansible (/etc/ansible/ansible.cfg o ~/.ansible.cfg):
[defaults]
host_key_checking = False
Opción de línea de comandos de Ansible
Como alternativa, puedes deshabilitar la comprobación de claves de host para un comando específico de Ansible utilizando la opción --ask-vault-pass o -k:
ansible-playbook my_playbook.yml --ask-vault-pass -k
Esto te pedirá que ingreses la contraseña del vault y deshabilitará la comprobación de claves de host para el comando actual.
graph LR
A[Ansible] -- Establecer Variable de Entorno --> B[ANSIBLE_HOST_KEY_CHECKING=False]
A -- Establecer Archivo de Configuración --> C[ansible.cfg]
A -- Usar Opción de Línea de Comandos --> D[--ask-vault-pass/-k]
Al deshabilitar la comprobación de claves de host, puedes simplificar el proceso de conexión y facilitar el trabajo con hosts dinámicos o efímeros. Sin embargo, es importante tener en cuenta que esto también aumenta el riesgo de un ataque de intermediario (man-in-the-middle), por lo que se recomienda deshabilitar la comprobación de claves de host solo en entornos no de producción o cuando estés seguro de que los hosts remotos son de confianza.
Configuración de la comprobación de claves de host
Si prefieres mantener habilitada la comprobación de claves de host, puedes configurarla para adaptarla a tus necesidades. Aquí tienes algunas opciones:
Aceptación manual de claves de host
Cuando te conectas a un host remoto por primera vez, Ansible te pedirá que aceptes la clave pública del host. Puedes aceptar manualmente la clave escribiendo "yes" cuando se te solicite:
The authenticity of host 'example.com (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:abcd1234efgh5678.
Are you sure you want to continue connecting (yes/no)? yes
Esto agregará la clave pública del host al archivo known_hosts, y Ansible la utilizará para verificar la identidad del host en conexiones posteriores.
Aceptación automática de claves de host
Como alternativa, puedes configurar Ansible para que acepte automáticamente las claves de host estableciendo la opción host_key_auto_add en el archivo de configuración de Ansible:
[defaults]
host_key_auto_add = True
Esto agregará automáticamente las nuevas claves de host al archivo known_hosts sin pedirte confirmación.
Especificación de un archivo de hosts conocidos personalizado
Por defecto, Ansible utiliza el archivo ~/.ssh/known_hosts para almacenar las claves de host. Sin embargo, puedes especificar un archivo known_hosts personalizado estableciendo la variable de entorno ANSIBLE_SSH_ARGS:
export ANSIBLE_SSH_ARGS="-o UserKnownHostsFile=/path/to/custom/known_hosts"
ansible-playbook my_playbook.yml
Esto puede ser útil si deseas mantener archivos known_hosts separados para diferentes entornos o proyectos.
graph LR
A[Ansible] -- Solicitar Aceptación Manual --> B[Archivo known_hosts]
A -- Aceptar Automáticamente --> C[Archivo known_hosts]
A -- Especificar Archivo Personalizado --> D[/path/to/custom/known_hosts]
Al configurar la comprobación de claves de host, puedes encontrar un equilibrio entre seguridad y conveniencia, asegurando que tus conexiones de Ansible sean seguras mientras se permite un flujo de trabajo eficiente.
Resumen
Al deshabilitar la comprobación de claves de host en Ansible, puedes optimizar tus flujos de trabajo de automatización, reducir las fricciones y mejorar la eficiencia general de la gestión de tu infraestructura. Este tutorial ha proporcionado una visión general integral del proceso, cubriendo la comprensión de la comprobación de claves de host, los pasos para deshabilitarla y las opciones de configuración disponibles. Con estos conocimientos, ahora puedes implementar esta técnica con confianza y mejorar tus capacidades de automatización impulsadas por Ansible.


