2017-04-03 118 views
4

我对Ansible相当陌生,并试图理解YAML文件。在那我不清楚这条线 - file: dest={{ '{{' }} docroot {{ '}}' }。有人可以向我解释那些花括号'{{''}}'在做什么吗?双花括号({{)是否意味着在YAML文件(Ansible使用)?

- name: Create Web Root 

    when: nginxinstalled|success 

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

    notify: 

     - Reload Nginx 
+1

你从哪里得到这个例子?看起来这个游戏正在为通过第二个Jinja2执行进行解析而设置。结果将是“dest = {{docroot}} mode = 755 ...” –

+0

只有其中一些文件是YAML文件。它们是常规文件,可用作可从中生成YAML文件的模板。 – Anthon

回答

3

Ansible使用的Jinja2模板

{{ }}被用来评估从传递的上下文内它们的表达。

所以{{ '{{' }}计算得到字符串{{

而且同时表达{{ docroot }}被写入到一个模板,其中docroot可能是另一种模板变量

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

+0

那么在给出的例子中,{{'{{'}}的目的究竟是什么? – techraf

0

我在Ansible documantation中发现这个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 
相关问题