【问题标题】:Escaping curly brackets in ansible在ansible中转义大括号
【发布时间】:2016-12-01 11:15:26
【问题描述】:

我正在尝试替换文件中的 {{ var }},但不知道如何转义大括号。

" {{ item.key }} "

当然替换 item.key 但忽略 {{ }}。我的文件中要替换的变量如下所示:

define ( 'DB_HOST', '{{ DB_HOST }}' );

部分脚本:

replace:
dest=env.php.j2
regexp= " {{ item.key }} " << ??????
replace= " {{ item.value }} "

我需要替换''内部。 预期结果:

define ( 'DB_HOST', 'hostname' );

提前致谢。

【问题讨论】:

  • 现在的问题是:为什么? Ansible 中有 Jinja2 模板,这些模板正是为此目的。你为什么要手动复制它们?
  • @techraf 在我的工作中,带有要替换的变量的文件是这样写的,我无法更改。必须替换整个 {{ var }}
  • 我在问:为什么? Ansible 开箱即用,您无需替换任何东西。

标签: escaping ansible brackets


【解决方案1】:

您不必自己替换变量。只需使用template 模块:

template:
  src:  env.php.j2
  dest: "/path/to/final/destination"

Ansible/Jinja2 将为您完成所有繁重的工作。

【讨论】:

  • 这是通过许多文件夹和位置完成的,这就是为什么我首先将文件“复制”到正确的文件夹,然后使用外部文件脚本尝试替换值。直到今天我不得不使用我们在 vars 周围有 {{ }} 的模板时还可以。据我尝试你的方式,模板不能使用我的字典,它也是外部文件。
猜你喜欢
  • 2021-05-15
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2013-05-07
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多