community.dns.lookup_as_dict 查找 – 将 DNS 记录查找为字典

注意

此查找插件是 community.dns 集合(版本 3.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.dns。 您需要进一步的要求才能使用此查找插件,有关详细信息,请参阅 要求

要在 playbook 中使用它,请指定:community.dns.lookup_as_dict

community.dns 2.6.0 中的新增功能

概要

  • 查找 DNS 记录并将其作为解释的字典返回。

要求

在执行此查找的本地控制器节点上需要以下要求。

  • dnspython >= 1.15.0(可能较旧的版本也有效)

  • ipaddress(在使用 server 时,在 Python 2.7 上)

术语

参数

注释

术语

列表 / 元素=字符串 / 必需

要查询的域名。

关键字参数

这描述了查找的关键字参数。 这些是以下示例中的值 key1=value1key2=value2 等等:lookup('community.dns.lookup_as_dict', key1=value1, key2=value2, ...)query('community.dns.lookup_as_dict', key1=value1, key2=value2, ...)

参数

注释

nxdomain_handling

字符串

如何处理 NXDOMAIN 错误。 如果查询未知域名,则会出现这些错误。

empty(默认)返回该域名的空结果。 这意味着对于相应的域名,不会向 _result 添加任何内容。

fail 使查找失败。

选择

  • "empty" ← (默认)

  • "fail"

query_retry

整数

DNS 查询超时重试次数。

默认: 3

query_timeout

浮点数

每次 DNS 查询的超时时间(以秒为单位)。

默认: 10.0

布尔值

在 community.dns 3.0.0 中添加

如果 false,则假定输入是绝对域名。

如果 true,如果输入不以 . 结尾,则假定输入是相对域名,则系统解析器配置中配置的搜索列表将用于相对名称,并且解析器的域可能会添加到相对名称。

请注意,此行为在 community.dns 3.0.0 中已更改。 在 community.dns 2.x.y 中,search=false 是唯一可用的选择。

选择

  • false

  • true ← (默认)

server

列表 / 元素=字符串

用于查找结果的 DNS 服务器。 必须是一个或多个 IP 地址的列表。

默认情况下,使用系统的标准解析器。

servfail_retries

整数

在 SERVFAIL 错误上重试的频率。

默认: 0

type

字符串

要检索的记录类型。

选择

  • "A" ← (默认)

  • "ALL"

  • "AAAA"

  • "CAA"

  • "CNAME"

  • "DNAME"

  • "DNSKEY"

  • "DS"

  • "HINFO"

  • "LOC"

  • "MX"

  • "NAPTR"

  • "NS"

  • "NSEC"

  • "NSEC3"

  • "NSEC3PARAM"

  • "PTR"

  • "RP"

  • "RRSIG"

  • "SOA"

  • "SPF"

  • "SRV"

  • "SSHFP"

  • "TLSA"

  • "TXT"

注释

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须在关键字参数之前列出:lookup('community.dns.lookup_as_dict', term1, term2, key1=value1, key2=value2)query('community.dns.lookup_as_dict', term1, term2, key1=value1, key2=value2)

  • 请注意,当将此查找插件与 lookup() 一起使用时,如果结果是只有一个元素的列表,Ansible 会直接返回该元素,而不是将其作为列表返回。由于此行为令人惊讶并可能导致问题,因此最好使用 query() 而不是 lookup()。请参阅示例以及 Ansible 文档中的强制查找返回列表

示例

- name: Look up A (IPv4) records for example.org as a list of dictionaries
  ansible.builtin.debug:
    msg: "{{ query('community.dns.lookup_as_dict', 'example.org.') }}"

- name: Look up AAAA (IPv6) records for example.org as a list of IPv6 addresses
  ansible.builtin.debug:
    msg: "{{ query('community.dns.lookup_as_dict', 'example.org.', type='AAAA' ) | map(attribute='address') }}"

- name: Look up TXT records for ansible.com as a list of strings
  ansible.builtin.debug:
    msg: "{{ query('community.dns.lookup_as_dict', 'ansible.com.', type='TXT' ) | map(attribute='value') }}"

返回值

描述

返回值

列表 / 元素=字典

所有查询的 DNS 名称的 type 类型的记录。

如果在 _terms 中查询了多个 DNS 名称,则结果列表已连接。

根据 type,返回不同的字段。

对于 type=TXTtype=SPF,还会将连接的值作为 _result[].value 返回。

返回: 成功

示例: [{"address": "127.0.0.1"}]

address

字符串

IPv4 或 IPv6 地址。

返回: 如果 type=Atype=AAAA

algorithm

整数

算法 ID。

返回: 如果 type=DNSKEYtype=DStype=NSEC3type=NSEC3PARAMtype=RRSIGtype=SSHFP

altitude

浮点数

海拔高度。

返回: 如果 type=LOC

cert

字符串

证书。

返回: 如果 type=TLSA

cpu

字符串

CPU。

返回: 如果 type=HINFO

digest

字符串

摘要。

返回: 如果 type=DS

digest_type

整数

摘要的类型。

返回: 如果 type=DS

exchange

字符串

交换服务器。

返回: 如果 type=MX

expiration

整数

到期 Unix 时间戳。

返回: 如果 type=RRSIG

expire

整数

如果主名称服务器没有响应,辅助名称服务器应停止应答此区域请求的秒数。

返回: 如果 type=SOA

fingerprint

字符串

指纹。

返回: 如果 type=SSHFP

flags

整数

标志。

对于 type=NAPTR,这实际上是 string 类型。

返回: 如果 type=CAAtype=DNSKEYtype=NAPTRtype=NSEC3type=NSEC3PARAM

fp_type

整数

指纹的类型。

返回: 如果 type=SSHFP

horizontal_precision

浮点数

位置的水平精度。

返回: 如果 type=LOC

inception

整数

起始 Unix 时间戳。

返回: 如果 type=RRSIG

iterations

整数

迭代次数。

返回: 如果 type=NSEC3type=NSEC3PARAM

key

字符串

密钥。

返回: 如果 type=DNSKEY

key_tag

整数

密钥的标签。

返回: 如果 type=DStype=RRSIG

labels

整数

标签。

返回: 如果 type=RRSIG

latitude

列表 / 元素=整数

位置的纬度。

返回: 如果 type=LOC

longitude

列表 / 元素=整数

位置的经度。

返回: 如果 type=LOC

mbox

字符串

邮箱。

返回: 如果 type=RP

minimum

整数

用于计算负缓存的 TTL。

返回: 如果 type=SOA

mname

字符串

此区域的主要主名称服务器。

返回: 如果 type=SOA

mtype

整数

mtype。

返回: 如果 type=TLSA

next

字符串

下一个值。

返回: 如果 type=NSECtype=NSEC3

order

整数

顺序值。

返回: 如果 type=NAPTR

original_ttl

整数

原始 TTL。

返回: 如果 type=RRSIG

os

字符串

操作系统。

返回: 如果 type=HINFO

port

整数

端口。

返回: 如果 type=SRV

preference

整数

此记录的优先级值。

返回: 如果 type=MXtype=NAPTR

priority

整数

此记录的优先级值。

返回: 如果 type=SRV

protocol

整数

协议。

返回: 如果 type=DNSKEY

refresh

整数

辅助名称服务器应在多少秒后查询主名称服务器的 SOA 记录以检测区域更改。

返回: 如果 type=SOA

regexp

字符串

正则表达式。

返回: 如果 type=NAPTR

replacement

字符串

替换项。

返回: 如果 type=NAPTR

retry

整数

如果主名称服务器没有响应,辅助名称服务器应在多少秒后重试从主名称服务器请求序列号。

返回: 如果 type=SOA

rname

字符串

负责此区域的管理员的电子邮件地址。

返回: 如果 type=SOA

salt

字符串

盐值。

返回: 如果 type=NSEC3type=NSEC3PARAM

selector

整数

选择器。

返回: 如果 type=TLSA

serial

整数

此区域的序列号。

返回: 如果 type=SOA

service

字符串

服务。

返回: 如果 type=NAPTR

signature

字符串

签名。

返回: 如果 type=RRSIG

signer

字符串

签名者。

返回: 如果 type=RRSIG

size

浮点数

位置的大小。

返回: 如果 type=LOC

strings

列表 / 元素=字符串

此记录的字符串列表。

请参阅 _result[].value 获取拼接后的结果。

返回: 如果 type=SPFtype=TXT

标签

字符串

标签。

返回: 如果 type=CAA

目标

字符串

目标。

返回: 如果 type=CNAMEtype=DNAMEtype=NStype=PTRtype=SRV

txt

字符串

TXT 值。

返回: 如果 type=RP

覆盖的类型

字符串

覆盖的类型。

返回: 如果 type=RRSIG

用法

整数

用法标志。

返回: 如果 type=TLSA

字符串

值。

对于 type=SPFtype=TXT,这是 _result[].strings 的拼接结果。

返回: 如果 type=CAAtype=SPFtype=TXT

垂直精度

浮点数

位置的垂直精度。

返回: 如果 type=LOC

权重

整数

服务的权重。

返回: 如果 type=SRV

窗口

字符串

窗口。

返回: 如果 type=NSECtype=NSEC3

作者

  • Felix Fontein (@felixfontein)

提示

每种条目类型的配置条目都有从低到高的优先级顺序。例如,列表中较低的变量将覆盖列表中较高的变量。