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)。

问题已解决:)