如何在j2模板文件中忽略jinja2大括号{{}}

时间:2017-11-05 11:27:43

标签: variables ansible jinja2 ansible-2.x ansible-template

我有一个j2文件,我想编辑并复制到我的远程服务器(作为我的ansible游戏)。该文件有大括号{{ }}表示的几个3个变量。我怎样才能只定位名为{{ bar }}的第二个变量并忽略文件中的另外两个变量,这样它们就会被单独存放并复制到我的远程服务器上?例如,我的test.j2文件包含:

line 1 {{ foo }}
line 2 {{ bar }}
line 3 {{ foo2 }}

我可以在我的ansible playbook中明确地解决{{ bar }}变量吗?如果是这样,我将如何在我的ansible playbook中编写它(语法上)?

3 个答案:

答案 0 :(得分:3)

以下内容不是我推荐的内容,但是如果您只需要模板bar而没有其他内容(或者如果bar始终先模板化,那么您可能使用{% raw %}块:

{% raw %}line 1 {{ foo }}{% endraw %}
line 2 {{ bar }}
{% raw %}line 3 {{ foo2 }}{% endraw %}

基本上,我们的想法是将非条形变量标记为原始变量,以便jinja不会对它们进行模板化。

答案 1 :(得分:2)

您可以使用{% raw %}块作为@bow提及,或者也可以使用较小的代码块的简写,它比使用原始块更短但不一定更具可读性。

line 1 {{ '{{' }} foo {{ '}}' }}
line 2 {{ bar }}
line 3 {{ '{{' }} foo {{ '}}' }}

http://jinja.pocoo.org/docs/2.9/templates/#escaping

答案 2 :(得分:0)

另一个选择:

line 1 {{ '{{foo}}' }}
line 2 {{ bar }}
line 3 {{ '{{foo2}}' }}