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