diff --git a/defaults/main.yml b/defaults/main.yml index 93942c69..8f8d1e2f 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -291,3 +291,7 @@ rke2_debug: false # The value for the node-name configuration item rke2_node_name: "{{ inventory_hostname }}" + +# Allow the role to restart rke2 services as needed. Set to false if this will +# be accomplished outside the role. +rke2_restart_allowed: true diff --git a/tasks/find_active_server.yml b/tasks/find_active_server.yml index 60e3a45b..a481101a 100644 --- a/tasks/find_active_server.yml +++ b/tasks/find_active_server.yml @@ -2,6 +2,8 @@ - name: Populate services facts ansible.builtin.service_facts: + # gathering service facts can be slow, only do so after install / upgrade + when: rke2_version != installed_version - name: Set the Active Server variable ansible.builtin.set_fact: diff --git a/tasks/main.yml b/tasks/main.yml index 47545748..ffbbeb0c 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -65,26 +65,29 @@ - active_server is defined - groups[rke2_cluster_group_name] | length | int >= 2 -- name: Rolling cordon and drain restart when version changes - ansible.builtin.include_tasks: rolling_restart.yml - with_items: "{{ groups[rke2_cluster_group_name] }}" - loop_control: - loop_var: _host_item +- name: "{{ _loop_name }}" + ansible.builtin.include_tasks: rolling_loop.yml + vars: + _loop_name: Rolling cordon and drain restart when version changes + _loop_over_tasks: rolling_restart.yml when: - - hostvars[_host_item].inventory_hostname == inventory_hostname + - rke2_restart_allowed + - rke2_restart_needed - installed_version != "not installed" - rke2_version != running_version - name: Flush handlers ansible.builtin.meta: flush_handlers -- name: Rolling restart when config files change - ansible.builtin.include_tasks: change_config.yml - with_items: "{{ groups[rke2_cluster_group_name] }}" - loop_control: - loop_var: _host_item +- name: "{{ _loop_name }}" + ansible.builtin.include_tasks: rolling_loop.yml + vars: + _loop_name: Rolling restart when config files change + _loop_over_tasks: rolling_restart.yml + # drain not required for config change only + rke2_drain_node_during_upgrade: false when: - - hostvars[_host_item].inventory_hostname == inventory_hostname + - rke2_restart_allowed - rke2_restart_needed - name: Final steps diff --git a/tasks/rolling_loop.yml b/tasks/rolling_loop.yml new file mode 100644 index 00000000..4753534f --- /dev/null +++ b/tasks/rolling_loop.yml @@ -0,0 +1,8 @@ +# Isolating this loop to a file reduces log spam and resource utilization +# when restarts are not required. +- name: "{{ _loop_name }} {{ hostvars[_host_item].inventory_hostname }}" + ansible.builtin.include_tasks: "{{ _loop_over_tasks }}" + with_items: "{{ groups[rke2_cluster_group_name] }}" + loop_control: + loop_var: _host_item + when: hostvars[_host_item].inventory_hostname == inventory_hostname