【问题标题】:What do double curly braces ({{) mean in YAML files (as used by Ansible)?YAML 文件中的双花括号 ({{) 是什么意思(由 Ansible 使用)?
【发布时间】:2017-04-03 12:45:51
【问题描述】:

我对 Ansible 还很陌生,并试图理解 YAML 文件。因为我不清楚这条线-file: dest={{ '{{' }} docroot {{ '}}' }。谁能解释一下那些花括号'{{''}}'在做什么?

- name: Create Web Root

    when: nginxinstalled|success

    file: dest={{ '{{' }} docroot {{ '}}' }} mode=775 state=directory owner=www-data group=www-data

  notify:

      - Reload Nginx

【问题讨论】:

  • 你从哪里得到这个例子的?看起来这个剧本正在设置为通过第二次 Jinja2 执行进行解析。结果将是“dest={{ docroot }} mode=755 ...”
  • 这些文件中只有一部分是 YAML 文件。它们是常规文件,可用作生成 YAML 文件的模板。

标签: ansible


【解决方案1】:

Ansible 使用 jinja2 模板

{{ }} 用于根据传递的上下文评估其中的表达式。

所以{{ '{{' }} 计算为字符串{{

while 表达式{{ docroot }} 被写入模板,其中docroot 可以是另一个模板变量

更多详情请参考https://docs.ansible.com/ansible-container/container_yml/template.html

【讨论】:

  • 那么在给出的例子中{{ '{{' }}的目的究竟是什么?
  • 链接失效
【解决方案2】:

我在 Ansible 文档中发现这个 YAML syntax overview 非常有用。

它说双花括号{{ variable }} 用于评估表达式。在区分单个花括号(在冒号之后)的同时,用于声明字典。例如:

satchmo: {name: Louis Armstrong, music: Jazz, instrument: Trumpet}

另外,看看Jinja Template Designer Documentation。 Jinja 模板在 YAML 之前渲染,这意味着它在 Ansible 执行之前被评估。

{% ... %} for Statements
{{ ... }} for Expressions to print to the template output
{# ... #} for Comments not included in the template output
#  ... ## for Line Statements

【讨论】:

猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 2017-10-09
  • 2011-09-09
相关资源
最近更新 更多