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.

93 lines
3.2 KiB

  1. ---
  2. - name: Gen_certs | write openssl config
  3. template:
  4. src: "openssl.conf.j2"
  5. dest: "{{ kube_config_dir }}/openssl.conf"
  6. run_once: yes
  7. delegate_to: "{{groups['kube-master'][0]}}"
  8. when: gen_certs|default(false)
  9. - name: Gen_certs | copy certs generation script
  10. copy:
  11. src: "make-ssl.sh"
  12. dest: "{{ kube_script_dir }}/make-ssl.sh"
  13. mode: 0700
  14. run_once: yes
  15. delegate_to: "{{groups['kube-master'][0]}}"
  16. when: gen_certs|default(false)
  17. - name: Gen_certs | run cert generation script
  18. command: "{{ kube_script_dir }}/make-ssl.sh -f {{ kube_config_dir }}/openssl.conf -d {{ kube_cert_dir }}"
  19. run_once: yes
  20. delegate_to: "{{groups['kube-master'][0]}}"
  21. when: gen_certs|default(false)
  22. notify: set secret_changed
  23. - set_fact:
  24. master_certs: ['ca-key.pem', 'admin.pem', 'admin-key.pem', 'apiserver-key.pem', 'apiserver.pem']
  25. node_certs: ['ca.pem', 'node.pem', 'node-key.pem']
  26. - name: Gen_certs | Gather master certs
  27. shell: "tar cfz - -C {{ kube_cert_dir }} {{ master_certs|join(' ') }} {{ node_certs|join(' ') }} | base64 --wrap=0"
  28. register: master_cert_data
  29. delegate_to: "{{groups['kube-master'][0]}}"
  30. run_once: true
  31. when: sync_certs|default(false)
  32. - name: Gen_certs | Gather node certs
  33. shell: "tar cfz - -C {{ kube_cert_dir }} {{ node_certs|join(' ') }} | base64 --wrap=0"
  34. register: node_cert_data
  35. delegate_to: "{{groups['kube-master'][0]}}"
  36. run_once: true
  37. when: sync_certs|default(false)
  38. - name: Gen_certs | Copy certs on masters
  39. shell: "echo '{{master_cert_data.stdout|quote}}' | base64 -d | tar xz -C {{ kube_cert_dir }}"
  40. changed_when: false
  41. when: inventory_hostname in groups['kube-master'] and sync_certs|default(false) and
  42. inventory_hostname != groups['kube-master'][0]
  43. - name: Gen_certs | Copy certs on nodes
  44. shell: "echo '{{node_cert_data.stdout|quote}}' | base64 -d | tar xz -C {{ kube_cert_dir }}"
  45. changed_when: false
  46. when: inventory_hostname in groups['kube-node'] and sync_certs|default(false) and
  47. inventory_hostname != groups['kube-master'][0]
  48. - name: Gen_certs | check certificate permissions
  49. file:
  50. path={{ kube_cert_dir }}
  51. group={{ kube_cert_group }}
  52. owner=kube
  53. recurse=yes
  54. - name: Gen_certs | set permissions on keys
  55. shell: chmod 0600 {{ kube_cert_dir}}/*key.pem
  56. when: inventory_hostname in groups['kube-master']
  57. changed_when: false
  58. - name: Gen_certs | target ca-certificates path
  59. set_fact:
  60. ca_cert_path: |-
  61. {% if ansible_os_family == "Debian" -%}
  62. /usr/local/share/ca-certificates/kube-ca.crt
  63. {%- elif ansible_os_family == "RedHat" -%}
  64. /etc/pki/ca-trust/source/anchors/kube-ca.crt
  65. {%- elif ansible_os_family == "CoreOS" -%}
  66. /etc/ssl/certs/kube-ca.pem
  67. {%- endif %}
  68. - name: Gen_certs | add CA to trusted CA dir
  69. copy:
  70. src: "{{ kube_cert_dir }}/ca.pem"
  71. dest: "{{ ca_cert_path }}"
  72. remote_src: true
  73. register: kube_ca_cert
  74. - name: Gen_certs | update ca-certificates (Debian/Ubuntu/CoreOS)
  75. command: update-ca-certificates
  76. when: kube_ca_cert.changed and ansible_os_family in ["Debian", "CoreOS"]
  77. - name: Gen_certs | update ca-certificates (RedHat)
  78. command: update-ca-trust extract
  79. when: kube_ca_cert.changed and ansible_os_family == "RedHat"