Ansible 循环,以 dict 作为 ansible_loop_var 键/值;错误`参数'release_values'的类型为<class 'str'>,我们无法转换为字典`

问题描述 投票:0回答:2

我正在尝试使用以下代码循环使用

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: ~
ansible kubernetes-helm
2个回答
0
投票

事实证明,这是

default(omit)
错误语法和使用保留关键字的组合(
.values
.values()
的简写)。

问题已解决:)


0
投票

我实际上遇到了同样的问题。你能解释一下解决方案吗?

© www.soinside.com 2019 - 2024. All rights reserved.