alexisfacques.ansible_module_dig
ansible-module-dig
ansible-module-dig
es un módulo personalizado de Ansible que permite realizar operaciones de búsqueda DNS desde hosts Ansible remotos y devuelve una lista de las direcciones IP (v4) resueltas por nombre. El módulo dig
también se puede configurar para analizar el archivo /etc/hosts
del host antes de realizar cualquier operación de búsqueda.
Este módulo se puede utilizar tanto para:
- resolver uno o varios nombres de host;
- asegurar si uno o varios nombres de host pueden ser resueltos (el módulo fallará si un nombre de host no puede resolverse a al menos una dirección).
Módulo dig
vs. lookup('dig', ... )
en Ansible
¡Asegúrate de saber lo que haces antes de usar este módulo! La forma oficial de realizar búsquedas DNS en Ansible es utilizando lookup('dig')
.
El principal problema al usar filtros de búsqueda, como toda plantillación, es que se evalúan en la máquina de control de Ansible y no en el host afectado. Esto podría causar efectos secundarios inesperados al ejecutar tus juegos de Ansible en entornos de red complejos o escenarios de despliegue, donde tu máquina de control puede resolver todos los hosts de tu clúster, pero los hosts no pueden (por ejemplo, al ejecutar tus configuraciones a través de una red de gestión externa o en entornos de red desconectados o altamente seguros).
Este módulo de Ansible dig
llena este vacío al ejecutar las búsquedas directamente desde los hosts remotos.
Empezando
Requisitos
Los siguientes requisitos son necesarios en el host que ejecuta este módulo.
dnspython
para Python.
Instalación
La forma "Ansible role"
- Clona este repositorio en tu
role_path
de Ansible o instálalo a través deansible-galaxy
;ansible-galaxy install alexisfacques.ansible_module_dig
- Importa el rol en tus playbooks antes de ejecutar cualquier rol o tarea que requiera el módulo
dig
:- hosts: all roles: - alexisfacques.ansible_module_dig tasks: - name: Asegurarse de que google.com se pueda resolver dig: qtype: A name: google.com register: dig_result
La forma "Ansible library"
Alternativamente, si importar un rol es demasiado complicado, puedes almacenar este módulo en el directorio library
definido en tu archivo ansible.cfg
(El valor predeterminado es un subdirectorio llamado library
en el directorio que contiene tus playbooks):
[defaults]
library = /path/to/your/library
Uso
Parámetros
Parámetro | Opciones/Predeterminados | Comentarios |
---|---|---|
qtype |
Predeterminado: A |
Indica qué tipo de consulta se requiere: ANY, A, MX, SIG... El tipo puede ser cualquier tipo de consulta válido. |
name - cadena | lista / requerido |
El/los nombre(s) del/los recurso(s) que se van a buscar. | |
nameserver - cadena | lista |
El/los nombre(s) o dirección(es) IPv4 de los servidores de nombres a utilizar. | |
with_etc_hosts | Opción: true false Predeterminado: true |
Indica si el módulo debe intentar resolver el nombre utilizando el/los archivo(s) /etc/hosts del host antes de ejecutar cualquier operación de búsqueda. |
Valores de retorno
Clave | Devuelto | Descripción |
---|---|---|
addresses | Si tiene éxito, si todos los nombres han sido resueltos a al menos 1 dirección IPv4. | Un array 2D de direcciones IPv4 para cada uno de los nombres buscados. |
Ejemplo de uso
Puedes encontrar ejemplos de uso aquí.
Agradecimientos
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
DNS lookups in Ansble (on remote host) made easy.
ansible-galaxy install alexisfacques.ansible_module_dig