如何从存储在 Ansible 寄存器中的 shell 命令输出中获取所需内容



我正在尝试找到一种方法来存储我在 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。

相关内容

  • 没有找到相关文章

最新更新