【问题标题】:inserting logic into ansible variable将逻辑插入ansible变量
【发布时间】:2020-04-06 19:17:45
【问题描述】:

非常菜鸟的问题,我在 /vars/myvars.yml 中有这段 ansible 代码:

service: "{{ 'service1' if litespeed|bool==true else 'service2' }}" 

services_node:
    - foo
    - bar
    - "{{ service }}"
    - baz

我试图在网上寻找我的答案,但找不到任何东西,大括号中的语法是什么?在大多数情况下,在线搜索会导致“ansible 或 YAML 中没有 if/else”。该语法来自哪种查询或语言?

【问题讨论】:

    标签: ansible yaml devops


    【解决方案1】:

    Ansible 使用 Jinja 进行模板化。你应该阅读ansible templating doc。 您还可以在 Jinja 的template designer doc 上找到很多有用的信息。

    在您的示例中,带有管道的语法(| 符号)是过滤器的语法。 Here 您将找到包含文档和示例的内置过滤器列表。

    你会看到bool过滤器没有列出,因为它是ansible自带的过滤器。您将找到这些过滤器的列表here

    模板本身不是 Yaml 的一部分,这就是它被表示为字符串的原因。

    【讨论】:

      【解决方案2】:

      大括号是 YAML 数据中 Jinja2 模板的一部分。有关完整信息,请参阅Templating (Jinja2)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-16
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        相关资源
        最近更新 更多