【问题标题】:ansible conditional statements should not include jinja2 templating delimitersansible 条件语句不应包含 jinja2 模板分隔符
【发布时间】:2020-08-09 07:24:50
【问题描述】:

当我仍然想使用变量时,我可以用什么来替换 {{ }}?

when: ansible_lvm.lvs.{{ resize_lvname }}.size_g < 10 and
      ansible_devices.{{ new_dev }}.size == "70.00 GB

[警告]:条件语句不应包含 jinja2 模板 分隔符,例如 {{ }} 或 {% %}。找到:ansible_lvm.lvs.{{ resize_lvname }}.size_g

【问题讨论】:

    标签: ansible


    【解决方案1】:

    when 条件中,你已经在一个隐式的 Jinja 模板上下文中......这意味着如果你想引用一个变量,你只需要变量名。例如:

    when: ansible_lvm.lvs[resize_lvname].size_g < 10 and
          ansible_devices[new_dev].size == "70.00 GB
    

    回想一下some.var.key 等价于some.var["key"];我们需要在这里使用[...] 语法,因为我们想使用resize_lvname 作为ansible_lvm.lvs 字典上的键。如果我们写成ansible_lvm.lvs.resize_lvname,我们将尝试查找具有文字名称resize_lvmname 的键(换句话说,这将等同于ansible_lvm.lvs["resize_lvname"])。

    【讨论】:

    • 我在另一个帖子上看到了这个建议并且已经尝试过了,它没有工作。例如,如果我只为测试尝试第一行,它会失败并出现此错误。
    • 致命:[linux1]:失败! => {"msg": "条件检查 'ansible_lvm.lvs.[resize_lvname].size_g
    • 帖子中有错字。对此感到抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多