使用 ansible 编辑 j2 模板

Editing an j2 template using ansible

我有一个供应商 Ansible 剧本给了我们,我需要在 j2 模板中添加一行并为我们的环境调整剧本, 我需要用一行编辑模板 -> retention_days: {{ xyz }}

原始模板是这样的:

#cat cluster.j2
apiVersion: v1
metadata:
  name: cluster
  cluster_name: {{ my_name }}
data:
  new_image: |+
      baseImage: {{ FROM_repo }}

这是我的 Ansible 剧本来添加这行。

---
- name: mydata
  hosts: localhost
  tasks:
   - name: edit files
     lineinfile:
       dest: cluster.j2
       line: " retention_days: {{ xyz }}"
       insertafter: 'new_image'

我的最终结果即;我的 j2 模板文件应该有这样的确切字符串

retention_days:{{xyz}}

final - 文件应如下所示 ->

#cat cluster.j2
apiVersion: v1
metadata:
  name: cluster
  cluster_name: {{ my_name }}
data:
  new_image: |+
      retention_days: {{ xyz }}
      baseImage: {{ FROM_repo }}

我不希望 Ansible 将 {{ xyz }} 视为一个变量,而是将其视为一个字符串并将它们添加到那里...我如何转义 {{ 和 }} 请让我知道.

现在,我得到一个错误:xyz 未定义..

MSG:

***The task includes an option with an undefined variable. The error was: 'xyz' is undefined***

documentation 中所述,您可以使用 {% raw %} 转义块中的元素,或添加额外的大括号。

例如:

---
- name: mydata
  hosts: localhost
  tasks:
   - name: edit files
     lineinfile:
       dest: cluster.j2
       line: " retention_days: {% raw %}{{ xyz }}{% endraw %}"
       # or
       # line: " retention_days: {{ '{{ xyz }}' }}" 
       insertafter: 'new_image'