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.

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