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.

139 lines
5.2 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. command: systemctl daemon-reload
  44. when: is_etcd_master
  45. - name: Configure | Ensure etcd is running
  46. service:
  47. name: etcd
  48. state: started
  49. enabled: yes
  50. when: is_etcd_master and etcd_cluster_setup
  51. - name: Configure | Ensure etcd-events is running
  52. service:
  53. name: etcd-events
  54. state: started
  55. enabled: yes
  56. when: is_etcd_master and etcd_events_cluster_setup
  57. - name: Configure | Check if etcd cluster is healthy
  58. shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} cluster-health | grep -q 'cluster is healthy'"
  59. register: etcd_cluster_is_healthy
  60. until: etcd_cluster_is_healthy.rc == 0
  61. retries: 4
  62. delay: "{{ retry_stagger | random + 3 }}"
  63. ignore_errors: false
  64. changed_when: false
  65. check_mode: no
  66. when: is_etcd_master and etcd_cluster_setup
  67. tags:
  68. - facts
  69. environment:
  70. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  71. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  72. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  73. - name: Configure | Check if etcd-events cluster is healthy
  74. shell: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_events_access_addresses }} cluster-health | grep -q 'cluster is healthy'"
  75. register: etcd_events_cluster_is_healthy
  76. until: etcd_events_cluster_is_healthy.rc == 0
  77. retries: 4
  78. delay: "{{ retry_stagger | random + 3 }}"
  79. ignore_errors: false
  80. changed_when: false
  81. check_mode: no
  82. when: is_etcd_master and etcd_events_cluster_setup
  83. tags:
  84. - facts
  85. environment:
  86. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  87. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  88. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  89. - name: Configure | Check if member is in etcd cluster
  90. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_access_addresses }} member list | grep -q {{ etcd_access_address }}"
  91. register: etcd_member_in_cluster
  92. ignore_errors: true
  93. changed_when: false
  94. check_mode: no
  95. when: is_etcd_master and etcd_cluster_setup
  96. tags:
  97. - facts
  98. environment:
  99. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  100. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  101. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  102. - name: Configure | Check if member is in etcd-events cluster
  103. shell: "{{ bin_dir }}/etcdctl --no-sync --endpoints={{ etcd_events_access_addresses }} member list | grep -q {{ etcd_access_address }}"
  104. register: etcd_events_member_in_cluster
  105. ignore_errors: true
  106. changed_when: false
  107. check_mode: no
  108. when: is_etcd_master and etcd_events_cluster_setup
  109. tags:
  110. - facts
  111. environment:
  112. ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}.pem"
  113. ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/admin-{{ inventory_hostname }}-key.pem"
  114. ETCDCTL_CA_FILE: "{{ etcd_cert_dir }}/ca.pem"
  115. - name: Configure | Join member(s) to etcd cluster one at a time
  116. include_tasks: join_etcd_member.yml
  117. vars:
  118. target_node: "{{ item }}"
  119. with_items: "{{ groups['etcd'] }}"
  120. when: inventory_hostname == item and etcd_cluster_setup and etcd_member_in_cluster.rc != 0 and etcd_cluster_is_healthy.rc == 0
  121. - name: Configure | Join member(s) to etcd-events cluster one at a time
  122. include_tasks: join_etcd-events_member.yml
  123. vars:
  124. target_node: "{{ item }}"
  125. with_items: "{{ groups['etcd'] }}"
  126. 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