如何将字典包含到 k8s_raw 数据字段中
How to include a dictionary into a k8s_raw data field
我正在编写一个 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="
首先,当您尝试上述操作时,它实际上说了什么?这将有助于获得您尝试的结果。
只是猜测,但请尝试将 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
旁注:我会在不尝试执行任务的情况下立即调试它。删除你的主要任务并在尝试使用 vars_files 后,尝试使用 debug
播放直接打印秘密。这将允许您微调语法并继续摆弄它直到正确为止,而不必 运行 并等待接下来的更复杂的播放。 Reference.
To import this list from a group_vars file
将本地主机放入一个组。例如一组 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
问题出在 SKRT:"c2trcnIK" 字段就在 下方“{{秘密}}”行。我删除了它,现在可以使用了!谢谢大家