基本上我有一个简单的服务器名称(非FQDN(,并且我试图确定它在哪个DNS区域中具有A record
我们的环境中有多个DNS区域。
由于我不能依赖 PTR 记录,因此我尝试使用 DIG 模块来查找以区域名称为变量的 A 记录。找到 A 记录后,我想使用该区域名称。不幸的是,我无法将上述所有内容放在 ansible 代码中
我试过以下
- name:
set_fact:
found: "{{found+[ lookup('dig', ('{{ dns_name }}.{{item.1}}'), 'qtype=A' , flat=0)] }}"
domain: "{{ item.0 }}"
with_indexed_items:
- zone1.com
- zone2.com
- zone3.com
ok: [xxxxxxxxxxxxxxxxxxxx] => {
"found": [
"10.10.10.10",
"NXDOMAIN",
"NXDOMAIN"]}
这会生成项目列表,但我不知道如何将这些项目与区域列表匹配或如何将索引添加到此列表中。
任何帮助将非常受欢迎
可以创建一个字典而不是列表,并使用json_query选择有效的记录。下面的播放给出了具有有效记录的区域列表
- set_fact:
found: "{{ found|default({})|
combine({ item: {
'rec_a': lookup('dig',
dns_name ~ '.' ~ item,
'qtype=A',
flat=0)}}) }}"
loop: "{{ zones }}"
- set_fact:
dns_domains: "{{ found|
dict2items|
json_query('[?value.rec_a != `NXDOMAIN`].key') }}"