我正在尝试找到一种方法来存储我在 Ansible 中运行的 NSLOOKUP 命令的内容,以查找与应用程序关联的 CNAME。CNAME 会随应用程序之间的应用程序而相应变化。
我在 shell 中执行了 nslookup 并注册了输出。
- name: Shell Command to perform NSLOOKUP
shell: nslookup abc.xyz.com
register: result
- debug: var=result
NSLOOKUP的输出:
"stdout_lines": [
"Server:tt10.10.10.10",
"Address:t10.10.10.11#53",
"",
"abc.xyz.comtcanonical name = abc.web.xyz.com.",
"Name:tabc.web.xyz.com",
"Address: 10.210.120.111"
]
基本上我需要获取 Name 值的输出,这个值因应用程序而异。所以我不能使用 stdout_lines[5] 这不适用于每种情况。
下面的任务报告名称的值
- debug:
msg: "{{ item.split('t').1 }}"
loop: "{{ result.stdout_lines }}"
when: item is match('^Name:*')
下一个任务创建名称值的列表
- set_fact:
names: "{{ names|default([]) + [ item.split('t').1 ] }}"
loop: "{{ result.stdout_lines }}"
when: item is match('^Name:*')
- debug:
var: names
首选选项应该是 Ansible 本机挖掘 – 使用 dnspython 库查询 DNS。