json_query 的 ansible 过滤器
ansible filter with json_query
我这样写:
- name: test for seed
debug:
var: hostvars|json_query("*.ansible_host")
它会打印每个主机。但这不会过滤主机:
- name: test for seed
debug:
var: hostvars|json_query("*[?ansible_host=='192.168.56.101']")
它只是打印一个空列表,而我确定该主机存在。这是相关的库存行:
[build-servers]
build-server ansible_host=192.168.56.101
我是不是做错了什么?
您应该过滤结果列表,而不是原始哈希:* | [?ansible_host=='192.168.168.21']
P.S。您通常不想使用 debug
模块的 var
选项来打印 Jinja 语句,而是使用 msg
。
我这样写:
- name: test for seed
debug:
var: hostvars|json_query("*.ansible_host")
它会打印每个主机。但这不会过滤主机:
- name: test for seed
debug:
var: hostvars|json_query("*[?ansible_host=='192.168.56.101']")
它只是打印一个空列表,而我确定该主机存在。这是相关的库存行:
[build-servers]
build-server ansible_host=192.168.56.101
我是不是做错了什么?
您应该过滤结果列表,而不是原始哈希:* | [?ansible_host=='192.168.168.21']
P.S。您通常不想使用 debug
模块的 var
选项来打印 Jinja 语句,而是使用 msg
。