我有一个j2文件,我想编辑并复制到我的远程服务器(作为我的ansible游戏)。该文件有大括号{{ }}
表示的几个3个变量。我怎样才能只定位名为{{ bar }}
的第二个变量并忽略文件中的另外两个变量,这样它们就会被单独存放并复制到我的远程服务器上?例如,我的test.j2文件包含:
line 1 {{ foo }}
line 2 {{ bar }}
line 3 {{ foo2 }}
我可以在我的ansible playbook中明确地解决{{ bar }}
变量吗?如果是这样,我将如何在我的ansible playbook中编写它(语法上)?
答案 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 {{ '}}' }}
答案 2 :(得分:0)
另一个选择:
line 1 {{ '{{foo}}' }}
line 2 {{ bar }}
line 3 {{ '{{foo2}}' }}