使用 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'
我有一个供应商 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'