Ansible json密钥输出
我正在使用ansible 2.9.2,我有一本剧本:Ansible json密钥输出,json,ansible,ansible-2.x,Json,Ansible,Ansible 2.x,我正在使用ansible 2.9.2,我有一本剧本: register: output - debug: msg={{ output.instance }} 这将产生以下输出: TASK [debug] ************************************************************************************************************************************************
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将自动将jsonnull
值转换为空字符串
从名称来看,我猜这个参数应该在不为空时返回一个列表。如果您需要在剧本中检查,最佳做法是验证参数长度,例如:
- 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不,我删除了真实的一个,为什么?