Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible json密钥输出_Json_Ansible_Ansible 2.x - Fatal编程技术网

Ansible json密钥输出

Ansible json密钥输出,json,ansible,ansible-2.x,Json,Ansible,Ansible 2.x,我正在使用ansible 2.9.2,我有一本剧本: register: output - debug: msg={{ output.instance }} 这将产生以下输出: TASK [debug] ************************************************************************************************************************************************

我正在使用ansible 2.9.2,我有一本剧本:

  register: output

- debug: msg={{ output.instance }}
这将产生以下输出:

TASK [debug] ***************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": {
        "annotation": "",
        "current_snapshot": null,
        "customvalues": {},
        "guest_consolidation_needed": false,
        "guest_question": null,
        "guest_tools_version": "0",
        "hw_cluster": null,
        "hw_datastores": [
            "V1",
        ],
        "hw_esxi_host": "10.10.101.10",
        "hw_eth0": {
            "addresstype": "assigned",
            "ipaddresses": null,
            "label": "",
            "macaddress": "00:00:00:00:00:51",
            "portgroup_key": null,
            "portgroup_portkey": null,
            "summary": "Vlan1"
我如何才能获得仅提供给我的输出
“ipaddresses”:null
? 我试过这个:

  • 调试:msg={{output.instance}json_query('hw_eth0{}.ipaddress')}
但我犯了一个错误

FAILED! => {"msg": "JMESPathError in json_query filter plugin:\\ninvalid token: Parse error at column 7, token \\"{\\" (LBRACE), for expression:\\n\\"hw_eth0{}.ipaddresses

您的jmespath表达式是错误的。你可以

以下几点应该有效

- debug:
    msg: "{{ output.instance | json_query('hw_eth0.ipaddresses') }}"
同时,在这种情况下,您实际上不需要json_查询,您只需要读取散列中的值:

- debug:
    var: output.instance.hw_eth0.ipaddresses
请注意,在输出中,ansible将自动将json
null
值转换为空字符串

从名称来看,我猜这个参数应该在不为空时返回一个列表。如果您需要在剧本中检查,最佳做法是验证参数长度,例如:

- name: Do something only when there are configured IPs
  debug:
    msg: There is at least one IP configured
  when: output.instance.hw_eth0.ipaddresses | length > 0

是否正确的“硬件数据存储”:[“V1”,],?@SaeidBabaei不,我删除了真实的一个,为什么?