微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ansible的新手,正在寻找正确的过滤器语法

如何解决Ansible的新手,正在寻找正确的过滤器语法

这是我的剧本

  tasks:
  - name: Load Variables
    include_vars: vars2.yml
    
  - name: show system info
    panos_op:
      provider: '{{ provider }}'
      cmd: '<show><system><info/></system></show>'
      cmd_is_xml: true
    register: systeminfo
  
  - debug: 
      msg: '{{systeminfo.stdout}}'

输出是:

                "app-release-date": null,"app-version": "8103-5197","av-release-date": null,"av-version": "0","cloud-mode": "non-cloud","default-gateway": "192.168.55.2","devicename": "PA-VM-Firewall","family": "vm","global-protect-client-package-version": "0.0.0","global-protect-clientless-vpn-release-date": null,"global-protect-clientless-vpn-version": "0","global-protect-datafile-release-date": "unkNown","global-protect-datafile-version": "unkNown","hostname": "PA-VM-Firewall","ip-address": "192.168.55.200","ipv6-address": "unkNown","ipv6-default-gateway": null,"ipv6-link-local-address": "fe80::20c:29ff:fef0:5639/64","is-dhcp": "no","logdb-version": "9.0.10","mac-address": "00:0c:29:f0:56:39","model": "PA-VM","multi-vsys": "off","netmask": "255.255.255.0","operational-mode": "normal","platform-family": "vm","plugin_versions": {
                    "entry": {
                        "@name": "vm_series","@version": "1.0.2","pkginfo": "vm_series-1.0.2"
                    }
                },"public-ip-address": "unkNown","serial": "0153510123456","sw-version": "9.0.1","threat-release-date": null,"threat-version": "0","time": "Tue Oct  6 22:03:33 2020","uptime": "0 days,0:29:00","url-db": "paloaltonetworks","url-filtering-version": "20201007.20031","vm-cpuid": "ESX:E9060900FFFB8B1F","vm-license": "VM-50","vm-mac-base": "7C:89:C1:B1:C4:00","vm-mac-count": "256","vm-mode": "VMWare ESXi","vm-uuid": "564D7A26-6146-CD3F-26CF-302C49F05639","vpn-disable-mode": "off","wf-private-release-date": "unkNown","wf-private-version": "0","wildfire-release-date": null,"wildfire-version": "0"

仅打印我需要的内容的语法是什么(例如:我只需要打印主机名,序列号,sw版本,ip地址)

谢谢

解决方法

根据docspanps_op产生有效的json。您发布的内容不是,但我想您只是没有发布所有内容。
您可以解析json输出,然后将其作为字典访问:

tasks:
  - name: Load Variables
    include_vars: vars2.yml
    
  - name: show system info
    panos_op:
      provider: '{{ provider }}'
      cmd: '<show><system><info/></system></show>'
      cmd_is_xml: true
    register: tmp  

  - name: parse json
    set_fact:
      sysinfo: "{{ tmp.stdout | from_json }}"

  - name: print relevant information
    debug: 
      msg: "{{ sysinfo['system'][item] }}"
    loop:
      - hostname
      - serial
      - sw-version
      - ip-address

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。