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.

112 lines
3.6 KiB

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