使用具有helm值的ansible jinja2模板时出错



我正在使用ansible jinja2模板为舵图创建值。我出错了template error while templating string: unexpected 'end of statement block'.这种情况发生在helm使用值文件之后。这是一个样本格式,而不是原始格式。

可解析的vars文件:

apartment:
size: "2000"
floor: "10"
numbers:
- 1
- 2
- 3

Ansible j2模板:

floorconfig:
enabled: true
aptnumbers: {% for item in apartment.numbers +%}
- {{ item }}
{%- endfor %}

期望输出:

floorconfig:
enabled: true
aptnumbers: 
- 1
- 2
- 3 

任务:

- name: Deploy version of helm chart
local_action:
module: kubernetes.core.helm
host: "https://{{ inventory_hostname }}:6443"
kubeconfig: "/etc/ansible/{{ inventory_hostname }}/etc/kubernetes/admin.conf"
name: kube-apt
chart_ref: apts/apt-stack
chart_version: 26.0.0
wait: True
update_repo_cache: True
wait_timeout: "10m"
state: present
values: "{{ lookup('template', 'templates/my_Values.yml.j2') | from_yaml }}"

输出错误:

FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'template'. Error was a <class 'ansible.errors.AnsibleError'>, original message: template error while templating string: unexpected 'end of statement block'.

您正在制作这个过于复杂的IMO.

  1. 您正在一个列表上循环,以在看起来像yaml模板的内容中重新创建完全相同的元素。为什么不直接使用列表
  2. 您正在使用一个模板来加载回yaml值,在那里您可以定义所需的var

您可以完全删除模板,并简化任务中的值声明,如:

- name: Deploy version of helm chart
kubernetes.core.helm:
host: "https://{{ inventory_hostname }}:6443"
kubeconfig: "/etc/ansible/{{ inventory_hostname }}/etc/kubernetes/admin.conf"
name: kube-apt
chart_ref: apts/apt-stack
chart_version: 26.0.0
wait: True
update_repo_cache: True
wait_timeout: "10m"
state: present
values:
floorconfig:
enabled: true
aptnumbers: "{{ apartment.numbers }}"
delegate_to: localhost

如果你真的想遍历一个单独的文件,只需将其作为另一个var文件,在那里定义整个字典,加载它并使用上面值中的字典。

相关内容

  • 没有找到相关文章

最新更新