如何在k8s_raw数据字段中包含字典

时间:2019-05-22 10:12:45

标签: kubernetes ansible ansible-template

我正在写一本 Ansible-playbook ,以将一系列秘密对象插入Kubernetes。 我正在使用 k8s_raw 语法,我想从 group_vars 文件导入此列表。 我找不到正确的语法将机密列表导入我的数据字段。

playbook.yml

- hosts: localhost
  tasks:
  - name: Create a Secret object
    k8s_raw:
      state: present
      definition:
        apiVersion: v1
        kind: Secret
        data:
          "{{ secrets }}"
          SKRT: "c2trcnIK"
        metadata:
          name: "test"
          namespace: "namespace-test"
        type: Opaqueroot
  vars_files:
    - "varfile.yml"

varfile.yml

secrets:
  TAMAGOTCHI_CODE: "MTIzNAo="
  FRIDGE_PIN: "MTIzNAo="

3 个答案:

答案 0 :(得分:0)

首先,当您尝试上述操作时,它实际上是怎么说?尝试的结果会有所帮助。

只是猜测,但尝试将var_files移至尝试使用变量的位置之前。另外,请确保在执行缩进时正确无误。

- hosts: localhost
  vars_files:
    - /varfile.yml

  tasks:
  - name: Create a Secret object
    k8s_raw:
      state: present
      definition:
        apiVersion: v1
        kind: Secret
        data:
          "{{ secrets }}"
        metadata:
          name: "test"
          namespace: "namespace-test"
        type: Opaqueroot

Reference

旁注:我将立即调试此程序,而无需尝试执行此任务。删除您的主要任务,并在尝试使用vars_files之后,尝试使用debug播放直接打印机密。这将使您可以微调语法并不断修改它,直到您正确使用它为止,而不必运行并等待随后的更复杂的播放。 Reference

答案 1 :(得分:0)

  

要从group_vars文件导入此列表

localhost 放入一个组。例如,一组 test

> cat hosts
test:
  hosts:
    localhost:

varfile.yml 放入 group_vars / test 目录

$ tree group_vars
group_vars/
├── test
    └── varfile.yml

然后在下面运行剧本

$ cat test.yml
- hosts: test
  tasks:
    - debug:
        var: secrets.TAMAGOTCHI_COD

$ ansible-playbook -i hosts test.yml

给予:

PLAY [test] ***********************************
TASK [debug] **********************************
ok: [localhost] => {
    "secrets.TAMAGOTCHI_CODE": "MTIzNAo="
}
PLAY RECAP *************************************
localhost: ok=1    changed=0    unreachable=0    failed=0

答案 2 :(得分:0)

问题出在 “ {{secrets}}” 下的 SKRT:“ c2trcnIK” 字段>行。我删除了它,现在可以使用了!谢谢大家。