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 文件。

关于项目

DNS lookups in Ansble (on remote host) made easy.

安装
ansible-galaxy install alexisfacques.ansible_module_dig
许可证
mit
下载
313
拥有者
🔵⚪️