问题描述
是否可以在 ansible 中从文件创建和 k8s 机密?
目前,我是这样做的,但它只在第一次运行时有效,因为如果我再次运行剧本,它会说秘密已经存在
- name: generate keypair
openssh_keypair:
path: /srv/{{item.namespace}}/id_{{item.name}}_rsa
when: item.additional_keys == true
loop: "{{ containers_release }}"
- name: create private key secret for auth api
shell: kubectl -n {{ item.namespace }} create secret generic id-{{ item.name }}-rsa-priv --from-file=/srv/{{ item.namespace }}/id_authapi_rsa
when: item.additional_keys == true
loop: "{{ containers_release }}"
- name: create public key secret for {{ item.name }}
shell: kubectl -n {{ item.namespace }} create secret generic id-{{ item.name }}-rsa-pub --from-file=/srv/{{ item.namespace }}/id_{{ item.name }}_rsa.pub
when: item.additional_keys == true
loop: "{{ containers_release }}"
解决方法
正如我在评论部分提到的,ansible 是幂等的。如果配置已经到位,ansible 在重新部署后不会做任何更改。这就是为什么再次运行 playbook 后,您再次获取 playbook 的原因是它说该秘密已经存在的信息。
看一看:create-secret-with-ansible。
您可以尝试使用 SecretHub。