Ansible loop with dict as ansible_loop_var key/value;错误`参数 'release_values' 的类型为 <class 'str'>,我们无法转换为 dict`
Ansible loop with dict as ansible_loop_var key/value; error `argument 'release_values' is of type <class 'str'> and we were unable to convert to dict`
我正在尝试使用以下代码循环使用 kubernetes.core.helm
模块:
- name: Install Helm charts
kubernetes.core.helm:
name: "{{ item.name }}"
chart_ref: "{{ item.ref }}"
namespace: apps
create_namespace: yes
wait: yes
kubeconfig: "{{ kubeconfig.path }}"
values: "{{ item.values | default(omit) }}"
loop:
- name: appA
ref: repo/appA
values:
installCRDs: true
- name: appB
ref: "https://<fqdn>/chart_appB.tgz"
- name: appC
ref: "https://<fqdn>/chart_appC.tgz"
我收到错误(在所有 3 次迭代中):
argument 'release_values' is of type <class 'str'> and we were unable to convert to dict: dictionary requested, could not parse JSON or key=value
.
如何使这个循环与作为实际字典传递的 values
键一起工作?
我尝试了各种不同的 jinja 过滤器,或不同的语法,将键 values
的名称更改为另一个,但基本上总是出现相同的错误。
编辑:
我还尝试结合下面的列表完全删除 default(omit)
,但没有任何区别。
[...]
loop:
- name: appA
ref: repo/appA
values:
installCRDs: true
- name: appB
ref: "https://<fqdn>/chart_appB.tgz"
values: ~
- name: appC
ref: "https://<fqdn>/chart_appC.tgz"
values: ~
原来这是 default(omit)
的错误语法和使用保留关键字的组合(.values
是 .values()
的 shorthand)。
问题已解决:)
我正在尝试使用以下代码循环使用 kubernetes.core.helm
模块:
- name: Install Helm charts
kubernetes.core.helm:
name: "{{ item.name }}"
chart_ref: "{{ item.ref }}"
namespace: apps
create_namespace: yes
wait: yes
kubeconfig: "{{ kubeconfig.path }}"
values: "{{ item.values | default(omit) }}"
loop:
- name: appA
ref: repo/appA
values:
installCRDs: true
- name: appB
ref: "https://<fqdn>/chart_appB.tgz"
- name: appC
ref: "https://<fqdn>/chart_appC.tgz"
我收到错误(在所有 3 次迭代中):
argument 'release_values' is of type <class 'str'> and we were unable to convert to dict: dictionary requested, could not parse JSON or key=value
.
如何使这个循环与作为实际字典传递的 values
键一起工作?
我尝试了各种不同的 jinja 过滤器,或不同的语法,将键 values
的名称更改为另一个,但基本上总是出现相同的错误。
编辑:
我还尝试结合下面的列表完全删除 default(omit)
,但没有任何区别。
[...]
loop:
- name: appA
ref: repo/appA
values:
installCRDs: true
- name: appB
ref: "https://<fqdn>/chart_appB.tgz"
values: ~
- name: appC
ref: "https://<fqdn>/chart_appC.tgz"
values: ~
原来这是 default(omit)
的错误语法和使用保留关键字的组合(.values
是 .values()
的 shorthand)。
问题已解决:)