使用helm扩展为ansible覆盖values.yml

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

我想创建一个playbook来安装来自IBM的ZIP存档提供的外部helm图表。它需要我们从自定义的值(例如主机到docker注册表)覆盖values.yml中的某些值。

来自IBMs values.yml的示例

image:
  pullPolicy: IfNotPresent
  repository: artifactory.swg.usma.ibm.com:6562

由于非公共仓库由IBM设置,我将图像(从IBM发布版下载)上传到我的自定义注册表registry.example.com,并希望在我的playbook中设置它:

- name: CNX Bootstrap
  helm:
    # Port forwarding from tiller to localhost
    host: localhost
    state: present
    name: bootstrap-test
    namespace: "{{namespace}}"
    chart: 
      name: bootstrap
      source:
        type: directory
        location: /install/component-pack/IC-ComponentPack-6.0.0.7/microservices_connections/hybridcloud/helmbuilds/bootstrap
    values: 
      image.repository: "registry.example.com"

这不起作用,pod日志说:

无法拉图像“artifactory.swg.usma.ibm.com:6562/bootstrap:20190204-022029”:rpc错误:代码=未知desc =获取https://artifactory.swg.usma.ibm.com:6562/v1/_ping:服务不可用

所以它仍然使用错误的注册表,我的自定义values似乎被忽略。使用helm cli,我可以使用--set开关覆盖,如下所示:

helm install --name=bootstrap /install/component-pack/IC-ComponentPack-6.0.0.7/microservices_connections/hybridcloud/helmbuilds/bootstrap-0.1.0-20190204-022029.tgz --set image.repository=registry.example.com

How can I override the chart's values like the --set switch does in Ansible?

module documentation不提供任何信息。我只使用found out pyhelm。但我找不到覆盖默认值的方法。

docker ansible ibm-connections kubernetes-helm
1个回答
1
投票

当PyHelm获取从Ansible图表定义传递的值时,它将作为字典传递,并转换为yaml。 Tiller(Helm的服务器端组件)期望传递的值yaml保持嵌套。因此,您需要将它们存储为Ansible定义中的嵌套字典。

在你的情况下,它看起来像:

- name: CNX Bootstrap
  helm:
    # Port forwarding from tiller to localhost
    host: localhost
    state: present
    name: bootstrap-test
    namespace: "{{namespace}}"
    chart: 
      name: bootstrap
      source:
        type: directory
        location: /install/component-pack/IC-ComponentPack-6.0.0.7/microservices_connections/hybridcloud/helmbuilds/bootstrap
    values: 
      image:
        repository: "registry.example.com"
© www.soinside.com 2019 - 2024. All rights reserved.