alexisfacques.ansible_module_dig
ansible-module-dig
ansible-module-dig
是一个自定义的 Ansible 模块,它允许你从远程 Ansible 主机运行 DNS 查询,并返回每个名称解析出的 IP(v4)地址列表。dig
模块还可以配置为在执行任何查询操作之前解析主机的 /etc/hosts
文件。
因此,您可以使用此模块来:
- 解析 一个或多个主机名;
- 断言 一个或多个主机名是否能够被解析(如果主机名无法解析到至少一个地址,模块将失败)。
dig
模块与 Ansible lookup('dig', ... )
在使用此模块之前,请确保你知道自己在做什么! 在 Ansible 中运行 DNS 查询的官方方式是使用 dig
查找。
使用查找过滤器的主要问题(与所有模板处理一样)是它在 Ansible 控制机器上进行评估,而不是在目标主机上。这可能会导致在复杂网络环境或部署场景中运行 Ansible 播放时出现意外的副作用,例如,如果您的控制机器能够解析集群的所有主机,但主机无法(例如,通过外部管理网络或在离线或高度安全的网络环境中运行配置播放)。
这个 Ansible dig
模块通过直接从远程主机执行查询来填补这个空白。
入门
要求
以下要求是 在执行 此模块的主机上需要的。
- Python 的
dnspython
。
安装
"Ansible 角色" 方式
- 将此存储库克隆到你的 Ansible
role_path
,或通过ansible-galaxy
安装;ansible-galaxy install alexisfacques.ansible_module_dig
- 在运行任何需要
dig
模块的角色或任务之前在你的播放中导入角色:- hosts: all roles: - alexisfacques.ansible_module_dig tasks: - name: 确保 google.com 可被解析 dig: qtype: A name: google.com register: dig_result
"Ansible 库" 方式
或者,如果导入角色太麻烦,你可以将此模块存储在你的 ansible.cfg
文件中定义的 library
目录中(默认是在包含你的播放的目录下的名为 library
的子目录):
[defaults]
library = /path/to/your/library
使用
参数
参数 | 选择/默认值 | 说明 |
---|---|---|
qtype |
默认: A |
指示所需的查询类型:ANY, A, MX, SIG... 类型可以是任何有效的查询类型。 |
name - 字符串 | 列表 / 必需 |
要查找的资源名称。 | |
nameserver - 字符串 | 列表 |
要使用的域名服务器的名称或 IPv4 地址。 | |
with_etc_hosts | 选择: true false 默认: true |
模块是否应该在运行任何查询操作之前尝试使用主机的 /etc/hosts 文件解析名称。 |
返回值
键 | 返回 | 描述 |
---|---|---|
addresses | 成功时,如果所有名称都已解析为至少一个 IPv4 地址。 | 一个二维数组,包含每个被查找名称的 IPv4 地址。 |
使用示例
使用示例可以在 这里 找到。
鸣谢
许可证
此项目根据 MIT 许可证授权 - 详细信息请参阅 LICENSE 文件。