You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.4 KiB

  1. ---
  2. - name: Check if secret for encrypting data at rest already exist
  3. stat:
  4. path: "{{ kube_cert_dir }}/secrets_encryption.yaml"
  5. get_attributes: no
  6. get_checksum: no
  7. get_mime: no
  8. register: secrets_encryption_file
  9. - name: Slurp secrets_encryption file if it exists
  10. slurp:
  11. src: "{{ kube_cert_dir }}/secrets_encryption.yaml"
  12. register: secret_file_encoded
  13. when: secrets_encryption_file.stat.exists
  14. - name: Base 64 Decode slurped secrets_encryption.yaml file
  15. set_fact:
  16. secret_file_decoded: "{{ secret_file_encoded['content'] | b64decode | from_yaml }}"
  17. when: secrets_encryption_file.stat.exists
  18. - name: Extract secret value from secrets_encryption.yaml
  19. set_fact:
  20. kube_encrypt_token_extracted: "{{ secret_file_decoded | json_query(secrets_encryption_query) | first | b64decode }}"
  21. when: secrets_encryption_file.stat.exists
  22. - name: Set kube_encrypt_token across master nodes
  23. set_fact:
  24. kube_encrypt_token: "{{ kube_encrypt_token_extracted }}"
  25. delegate_to: "{{ item }}"
  26. delegate_facts: true
  27. with_inventory_hostnames: kube_control_plane
  28. when: kube_encrypt_token_extracted is defined
  29. - name: Write secrets for encrypting secret data at rest
  30. template:
  31. src: secrets_encryption.yaml.j2
  32. dest: "{{ kube_cert_dir }}/secrets_encryption.yaml"
  33. owner: root
  34. group: "{{ kube_cert_group }}"
  35. mode: 0640
  36. tags:
  37. - kube-apiserver