From e53e97cf9a3abd74dd0f9a77bc7514f08bf11389 Mon Sep 17 00:00:00 2001 From: Chris Hammer Date: Wed, 31 Jul 2024 11:53:25 -0400 Subject: [PATCH] Fix Docker service management; relocate Grub fsck --- bigboot_execute_resize.yml | 32 ++++++++++---------------------- bigboot_setup_environment.yml | 4 +++- tasks/grub_filesystem_check.yml | 20 ++++++++++++++++++++ tasks/stop_docker_service.yml | 17 +++++++++++++++++ vars/bigboot_vars.yml | 2 ++ 5 files changed, 52 insertions(+), 23 deletions(-) create mode 100644 tasks/grub_filesystem_check.yml diff --git a/bigboot_execute_resize.yml b/bigboot_execute_resize.yml index 13daff3..103ddab 100644 --- a/bigboot_execute_resize.yml +++ b/bigboot_execute_resize.yml @@ -13,25 +13,8 @@ when: - bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] | default(false) | bool block: - - name: Enable Grub filesystem check - ansible.builtin.import_role: - name: autofsck - tasks_from: main.yml - - - name: Flush handlers - ansible.builtin.meta: flush_handlers - - # Make sure to update the reboot code for the WF environment - - name: Reboot to run filesystem checks - ansible.builtin.reboot: - - - name: Disable Grub filesystem check - ansible.builtin.import_role: - name: autofsck - tasks_from: cleanup.yml - - - name: Flush handlers - ansible.builtin.meta: flush_handlers + - name: Perform filesystem check prior to Bigboot execution + ansible.builtin.import_tasks: tasks/grub_filesystem_check.yml - name: Check for and disable services exceeding the timeout threshold ansible.builtin.import_tasks: tasks/check_systemd_services.yml @@ -45,9 +28,6 @@ - bigboot_systemd_disabled_services is defined - bigboot_systemd_disabled_services | length > 0 - - name: Stop Docker service if present and running - ansible.builtin.import_tasks: tasks/stop_docker_service.yml - - name: Extend the timeout values for physical hosts ansible.builtin.set_fact: @@ -74,6 +54,14 @@ when: - bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] | bool + - name: Restore Docker service to its pre-Bigboot state + ansible.builtin.service: + name: "{{ bigboot_docker_service }}" + state: "{{ bigboot_data[inventory_hostname]['bigboot_docker_running'] }}" + enabled: "{{ bigboot_data[inventory_hostname]['bigboot_docker_enabled'] }}" + when: + - ansible_facts['services'][bigboot_docker_service] is defined + - name: Re-enabling services previously disabled ansible.builtin.service: name: "{{ item }}" diff --git a/bigboot_setup_environment.yml b/bigboot_setup_environment.yml index 5acc561..05aa168 100644 --- a/bigboot_setup_environment.yml +++ b/bigboot_setup_environment.yml @@ -12,7 +12,7 @@ - name: Cleanup from any previous executions ansible.builtin.import_tasks: tasks/cleanup.yml - - name: Stop Docker service if present and running + - name: Stop and disable the Docker service if present and running ansible.builtin.import_tasks: tasks/stop_docker_service.yml - name: Set boot device details @@ -33,6 +33,8 @@ 'bigboot_adjacent_lvm_device': bigboot_adjacent_lvm_device, 'bigboot_lv_shrink_size': bigboot_lv_shrink_size | int, 'bigboot_size': bigboot_size, + 'bigboot_docker_running': bigboot_docker_running, + 'bigboot_docker_enabled': bigboot_docker_enabled, 'ip_addresses': ansible_all_ipv4_addresses, 'server_hostname': ansible_hostname } diff --git a/tasks/grub_filesystem_check.yml b/tasks/grub_filesystem_check.yml new file mode 100644 index 0000000..cdff1a1 --- /dev/null +++ b/tasks/grub_filesystem_check.yml @@ -0,0 +1,20 @@ +--- +- name: Enable Grub filesystem check + ansible.builtin.import_role: + name: autofsck + tasks_from: main.yml + +- name: Flush handlers + ansible.builtin.meta: flush_handlers + +# Make sure to update the reboot code for the WF environment +- name: Reboot to run filesystem checks + ansible.builtin.reboot: + +- name: Disable Grub filesystem check + ansible.builtin.import_role: + name: autofsck + tasks_from: cleanup.yml + +- name: Flush handlers + ansible.builtin.meta: flush_handlers diff --git a/tasks/stop_docker_service.yml b/tasks/stop_docker_service.yml index 69fce68..e561bba 100644 --- a/tasks/stop_docker_service.yml +++ b/tasks/stop_docker_service.yml @@ -2,10 +2,27 @@ - name: Ensure service facts are available ansible.builtin.service_facts: +- name: Set Docker state + when: + - ansible_facts['services'][bigboot_docker_service] is defined + block: + - name: Set Docker running state + ansible.builtin.set_fact: + bigboot_docker_running: started + when: + - ansible_facts['services'][bigboot_docker_service]['state'] == "running" + + - name: Set Docker enabled state + ansible.builtin.set_fact: + bigboot_docker_enabled: true + when: + - ansible_facts['services'][bigboot_docker_service]['status'] == "enabled" + - name: Stop Docker service due to incompatibility ansible.builtin.service: name: "{{ bigboot_docker_service }}" state: stopped + enabled: false when: - ansible_facts['services'][bigboot_docker_service] is defined - ansible_facts['services'][bigboot_docker_service]['state'] == "running" diff --git a/vars/bigboot_vars.yml b/vars/bigboot_vars.yml index 0b111e3..51c2f55 100644 --- a/vars/bigboot_vars.yml +++ b/vars/bigboot_vars.yml @@ -9,6 +9,8 @@ bigboot_reboot_timeout: 1800 bigboot_skip_rear_backup: false bigboot_docker_service: docker.service +bigboot_docker_running: stopped +bigboot_docker_enabled: false # Max value in minutes for the timeout threshold: bigboot_service_max_timeout: 5