Ansible 从文件创建 kubernetes 机密

问题描述

是否可以在 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

参见:ansible-playbook-secret