【问题标题】:ansible filter with json_query带有 json_query 的 ansible 过滤器
【发布时间】:2017-07-25 08:14:28
【问题描述】:

我写这个:

- 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 jinja2 jmespath


    【解决方案1】:

    您应该过滤结果列表,而不是原始哈希:* | [?ansible_host=='192.168.168.21']

    附:您通常不想使用debug 模块的var 选项来打印Jinja 语句,请改用msg

    【讨论】:

    • 嗯,当我写*[?ansible_host=='192.168.56.101'] 时,我读起来就像select every hash where ansible_host == 192.168.56.101。这显然是错误的,但你能再解释一下吗?或者提供文档链接来学习它?无论如何,您的解决方案是有效的。
    • Afaik filters 仅适用于列表,不适用于哈希。因此,您可以列出原始哈希中的所有项目,使用管道停止进一步的投影,然后使用此列表应用所需的过滤器。
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多