过滤调试信息

问题描述

我正在使用 Ansible 2.9.13 并且我有这个剧本:

---
- hosts: localhost
  connection: local
  vars:
    ansible_python_interpreter: /usr/bin/env python3
  vars_files:
            - vars.yml
  tasks:
    - name: Get Tags from given VM Name
      vmware_vm_info:
         validate_certs: no
         hostname: '{{ vcenter_server }}'
         username: '{{ vcenter_user }}'
         password: '{{ vcenter_pass }}'
         folder: '{{ provision_folder }}'
      delegate_to: localhost
      register: vm_info
    - debug:
         msg:  "{{ vm_info.virtual_machines | json_query(query) }}"
      vars:
         query: "[?guest_name=='C97A1612171478']"

当我运行它时,我得到了这个输出:

ok: [localhost] => {
    "msg": [
        {
            "attributes": {},"cluster": "xxx01","esxi_hostname": "xxxx","guest_fullname": "Microsoft Windows 10 (64-bit)","guest_name": "C97A1612171478","ip_address": "10.x.x.x","mac_address": [
                "0x:x:x:x:xd:x"
            ],"power_state": "poweredOn","tags": [],"uuid": "420xxaf-xxx-xe2-9xe-a5xxxxxa3c","vm_network": {
                "0x:x:x:xa:x:x": {
                    "ipv4": [
                        "169.x.x.x"
                    ],"ipv6": [
                        "x::x:x:x:xc"
                    ]
                },"x:x:x:x:x0:x1": {
                    "ipv4": [
                        "169.x.x.x"
                    ],"ipv6": [
                        "x::x7:xf:x:x"
                    ]
                },"0x:5x:x:x:ax:x": {
                    "ipv4": [
                        "10.x.x.x"
                    ],"ipv6": [
                        "x::1xx:x:8xx:x"
                    ]
                }
            }
        }
    ]
}

如何过滤输出以使其仅显示 "ip_address": "10.x.x.x"。 最后只有10.x.x.x

我尝试了一些在消息代码中添加键 ip_address 的方法,但所有方法都给我一个错误。

我可以使用 Python 过滤 msg,但如果有办法使用 Ansible 获取它,我想知道如何。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)