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.

149 lines
5.3 KiB

  1. ---
  2. - name: Configure | Check if etcd cluster is healthy
  3. shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} cluster-health | grep -q 'cluster is healthy'"
  4. register: etcd_cluster_is_healthy
  5. ignore_errors: true
  6. changed_when: false
  7. check_mode: no
  8. when: is_etcd_master and etcd_cluster_setup
  9. tags:
  10. - facts
  11. environment:
  12. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  13. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  14. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  15. - name: Configure | Check if etcd-events cluster is healthy
  16. shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_events_access_addresses }} cluster-health | grep -q 'cluster is healthy'"
  17. register: etcd_events_cluster_is_healthy
  18. ignore_errors: true
  19. changed_when: false
  20. check_mode: no
  21. when: is_etcd_master and etcd_events_cluster_setup
  22. tags:
  23. - facts
  24. environment:
  25. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  26. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  27. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  28. - include_tasks: refresh_config.yml
  29. when: is_etcd_master
  30. - name: Configure | Copy etcd.service systemd file
  31. template:
  32. src: "etcd-{{ etcd_deployment_type }}.service.j2"
  33. dest: /etc/systemd/system/etcd.service
  34. backup: yes
  35. when: is_etcd_master and etcd_cluster_setup
  36. - name: Configure | Copy etcd-events.service systemd file
  37. template:
  38. src: "etcd-events-{{ etcd_deployment_type }}.service.j2"
  39. dest: /etc/systemd/system/etcd-events.service
  40. backup: yes
  41. when: is_etcd_master and etcd_events_cluster_setup
  42. - name: Configure | reload systemd
  43. systemd:
  44. daemon_reload: true
  45. when: is_etcd_master
  46. - name: Configure | Ensure etcd is running
  47. service:
  48. name: etcd
  49. state: started
  50. enabled: yes
  51. when: is_etcd_master and etcd_cluster_setup
  52. - name: Configure | Ensure etcd-events is running
  53. service:
  54. name: etcd-events
  55. state: started
  56. enabled: yes
  57. when: is_etcd_master and etcd_events_cluster_setup
  58. - name: Configure | Check if etcd cluster is healthy
  59. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_client_url }} cluster-health | grep -q 'cluster is healthy'"
  60. register: etcd_cluster_is_healthy
  61. until: etcd_cluster_is_healthy.rc == 0
  62. retries: 4
  63. delay: "{{ retry_stagger | random + 3 }}"
  64. ignore_errors: false
  65. changed_when: false
  66. check_mode: no
  67. delegate_to: "{{ groups['etcd'][0] }}"
  68. run_once: yes
  69. when:
  70. - is_etcd_master
  71. - etcd_cluster_setup
  72. tags:
  73. - facts
  74. environment:
  75. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  76. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  77. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  78. - name: Configure | Check if etcd-events cluster is healthy
  79. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_events_client_url }} cluster-health | grep -q 'cluster is healthy'"
  80. register: etcd_events_cluster_is_healthy
  81. until: etcd_events_cluster_is_healthy.rc == 0
  82. retries: 4
  83. delay: "{{ retry_stagger | random + 3 }}"
  84. ignore_errors: false
  85. changed_when: false
  86. check_mode: no
  87. delegate_to: "{{ groups['etcd'][0] }}"
  88. run_once: yes
  89. when:
  90. - is_etcd_master
  91. - etcd_events_cluster_setup
  92. - etcd_cluster_setup
  93. tags:
  94. - facts
  95. environment:
  96. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  97. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  98. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  99. - name: Configure | Check if member is in etcd cluster
  100. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_access_addresses }} member list | grep -q {{ etcd_access_address }}"
  101. register: etcd_member_in_cluster
  102. ignore_errors: true
  103. changed_when: false
  104. check_mode: no
  105. when: is_etcd_master and etcd_cluster_setup
  106. tags:
  107. - facts
  108. environment:
  109. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  110. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  111. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  112. - name: Configure | Check if member is in etcd-events cluster
  113. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_events_access_addresses }} member list | grep -q {{ etcd_access_address }}"
  114. register: etcd_events_member_in_cluster
  115. ignore_errors: true
  116. changed_when: false
  117. check_mode: no
  118. when: is_etcd_master and etcd_events_cluster_setup
  119. tags:
  120. - facts
  121. environment:
  122. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  123. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  124. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  125. - name: Configure | Join member(s) to etcd cluster one at a time
  126. include_tasks: join_etcd_member.yml
  127. vars:
  128. target_node: "{{ item }}"
  129. with_items: "{{ groups['etcd'] }}"
  130. when: inventory_hostname == item and etcd_cluster_setup and etcd_member_in_cluster.rc != 0 and etcd_cluster_is_healthy.rc == 0
  131. - name: Configure | Join member(s) to etcd-events cluster one at a time
  132. include_tasks: join_etcd-events_member.yml
  133. vars:
  134. target_node: "{{ item }}"
  135. with_items: "{{ groups['etcd'] }}"
  136. when: inventory_hostname == item and etcd_events_cluster_setup and etcd_events_member_in_cluster.rc != 0 and etcd_events_cluster_is_healthy.rc == 0