diff --git a/.gitignore b/.gitignore index 6be675f..18a4ed6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ filter_plugins/*.bak python/ collections/ansible_collections roles/autofsck +*.bak diff --git a/bigboot-noop.yml b/bigboot-noop.yml index 6507a2e..8e31f6b 100644 --- a/bigboot-noop.yml +++ b/bigboot-noop.yml @@ -18,79 +18,17 @@ - name: Capture logical volume information ansible.builtin.import_tasks: tasks/capture_lv_device_details.yml - -- name: Perform a ReaR backup if any disk modifications are to be made - ansible.builtin.import_playbook: rhc.rear.rear_backup - when: - - bigboot_execute_bigboot | default('false') | bool - - not bigboot_skip_rear_backup | default('true') | bool - - -- name: Perform logical volume and boot parition resizing as needed - hosts: all - become: true - gather_facts: true - strategy: free - - vars_files: - - bigboot_vars.yml - - tasks: - - name: Perform filesystem check prior to Bigboot execution - when: - - (bigboot_execute_shrink_lv | bool or bigboot_execute_bigboot | 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: Check for and disable services exceeding the timeout threshold - ansible.builtin.import_tasks: tasks/check_systemd_services.yml - - - - name: Extend the timeout values for physical hosts - ansible.builtin.set_fact: - initramfs_post_reboot_delay: 300 - initramfs_reboot_timeout: 14400 - when: - - "'host' in ansible_virtualization_role" - - - name: Shrink the logical volume to support /boot expansion - ansible.builtin.debug: - msg: - - "device: {{ bigboot_adjacent_lvm_device }}" - - "size : {{ bigboot_lv_shrink_size | int }}" - when: - - bigboot_execute_shrink_lv | bool - - - name: Expand the /boot partition as requested - ansible.builtin.debug: - msg: "{{ bigboot_size }}" - when: - - bigboot_execute_bigboot | bool - - - name: Re-enabling services previously disabled - ansible.builtin.service: - name: "{{ item }}" - state: started - enabled: true - loop: "{{ bigboot_systemd_disabled_services }}" - when: - - bigboot_systemd_disabled_services is defined - - bigboot_systemd_disabled_services | length > 0 + - name: Set environment for subsequent workflow nodes + ansible.builtin.set_stats: + data: + bigboot_data: "{{ bigboot_data | default({}) | + combine({inventory_hostname: + { + 'bigboot_execute_bigboot': bigboot_execute_bigboot, + 'bigboot_execute_shrink_lv': bigboot_execute_shrink_lv, + 'bigboot_adjacent_lvm_device': bigboot_adjacent_lvm_device, + 'bigboot_lv_shrink_size': bigboot_lv_shrink_size | int, + 'bigboot_size': bigboot_size, + 'bigboot_skip_rear_backup': bigboot_skip_rear | default('false') + } + })}}" diff --git a/bigboot_execute_resize.yml b/bigboot_execute_resize.yml index 2055593..8fc4a30 100644 --- a/bigboot_execute_resize.yml +++ b/bigboot_execute_resize.yml @@ -9,10 +9,25 @@ - bigboot_vars.yml tasks: - - name: Perform filesystem check prior to Bigboot execution + - name: Perform service and filesystem checks prior to Bigboot execution when: - - (bigboot_execute_shrink_lv | bool or bigboot_execute_bigboot | bool) + - (bigboot_data[inventory_hostname]['bigboot_execute_shrink_lv'] | bool + or bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] | bool) block: + - name: Check for and disable services exceeding the timeout threshold + ansible.builtin.import_tasks: tasks/check_systemd_services.yml + + - name: Services disabled notice + ansible.builtin.debug: + msg: >- + The following services were disabled, and will be re-enabled post + Bigboot execution: + + {{ bigboot_systemd_disabled_services | flatten }} + when: + - bigboot_systemd_disabled_services is defined + - bigboot_systemd_disabled_services | length > 0 + - name: Enable Grub filesystem check ansible.builtin.import_role: name: autofsck @@ -33,9 +48,6 @@ - name: Flush handlers ansible.builtin.meta: flush_handlers - - name: Check for and disable services exceeding the timeout threshold - ansible.builtin.import_tasks: tasks/check_systemd_services.yml - - name: Extend the timeout values for physical hosts ansible.builtin.set_fact: @@ -49,16 +61,29 @@ name: infra.lvm_snapshots.shrink_lv vars: shrink_lv_devices: - - device: "{{ bigboot_adjacent_lvm_device }}" - size: "{{ bigboot_lv_shrink_size | int }}" + - device: "{{ bigboot_data[inventory_hostname]['bigboot_adjacent_lvm_device'] }}" + size: "{{ bigboot_data[inventory_hostname]['bigboot_lv_shrink_size'] | int }}" when: - - bigboot_execute_shrink_lv | bool + - bigboot_data[inventory_hostname]['bigboot_execute_shrink_lv'] | bool - name: Expand the /boot partition as requested ansible.builtin.import_role: name: infra.lvm_snapshots.bigboot + vars: + bigboot_size: "{{ bigboot_data[inventory_hostname]['bigboot_size'] }}" when: - - bigboot_execute_bigboot | bool + - bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] | bool + + - name: Get the list of services on the host + ansible.builtin.service_facts: + + - name: Re-enabling Docker service + ansible.builtin.service: + name: docker.service + state: started + enabled: true + when: + - "'docker.service' in ansible_facts['services']" - name: Re-enabling services previously disabled ansible.builtin.service: diff --git a/bigboot_rear_backup.yml b/bigboot_rear_backup.yml index ffde0d6..786c8c7 100644 --- a/bigboot_rear_backup.yml +++ b/bigboot_rear_backup.yml @@ -1,6 +1,22 @@ --- -- name: Perform a ReaR backup if any disk modifications are to be made +- name: Capture boot and logical volume information + hosts: all + become: true + gather_facts: true + strategy: free + + tasks: + - name: Debug bigboot_execute_shrink_lv + ansible.builtin.debug: + msg: "bigboot_data[inventory_hostname]['bigboot_execute_shrink_lv'] -> {{ bigboot_data[inventory_hostname]['bigboot_execute_shrink_lv'] }}" + + - name: Debug bigboot_execute_bigboot + ansible.builtin.debug: + msg: "bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] -> {{ bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] }}" + +- name: Perform a ReaR backup before the /boot expansion ansible.builtin.import_playbook: rhc.rear.rear_backup when: - - bigboot_execute_bigboot | default('false') | bool - - not bigboot_skip_rear_backup | default('true') | bool + - (bigboot_data[inventory_hostname]['bigboot_execute_shrink_lv'] | bool + or bigboot_data[inventory_hostname]['bigboot_execute_bigboot'] | bool) + - not bigboot_rear_backup_skip | default(false) | bool diff --git a/bigboot_setup_environment.yml b/bigboot_setup_environment.yml index bd7dd06..1d356a0 100644 --- a/bigboot_setup_environment.yml +++ b/bigboot_setup_environment.yml @@ -12,22 +12,46 @@ - name: Cleanup from any previous executions ansible.builtin.import_tasks: tasks/cleanup.yml + - name: Get the list of services on the host + ansible.builtin.service_facts: + + - name: Disable Docker service due to incompatibility + ansible.builtin.service: + name: docker.service + state: stopped + enabled: false + when: + - "'docker.service' in ansible_facts['services']" + - name: Capture boot device details ansible.builtin.import_tasks: tasks/capture_boot_device_details.yml - name: Capture logical volume information ansible.builtin.import_tasks: tasks/capture_lv_device_details.yml + - name: Set ReaR backup flag + ansible.builtin.set_fact: + bigboot_rear_backup_skip: + - name: Set environment for subsequent workflow nodes ansible.builtin.set_stats: data: - bigboot_execute_bigboot: "{{ bigboot_execute_bigboot }}" - bigboot_execute_shrink_lv: "{{ bigboot_execute_shrink_lv }}" - bigboot_adjacent_lvm_device: "{{ bigboot_adjacent_lvm_device }}" - bigboot_lv_shrink_size: "{{ bigboot_lv_shrink_size | int }}" - bigboot_size: "{{ bigboot_size }}" - bigboot_skip_rear_backup: "{{ bigboot_skip_rear | default('false') }}" - per_host: false - aggregate: false + bigboot_data: "{{ bigboot_data | default({}) | + combine({inventory_hostname: + { + 'bigboot_execute_bigboot': bigboot_execute_bigboot, + 'bigboot_execute_shrink_lv': bigboot_execute_shrink_lv, + 'bigboot_adjacent_lvm_device': bigboot_adjacent_lvm_device, + 'bigboot_lv_shrink_size': bigboot_lv_shrink_size | int, + 'bigboot_size': bigboot_size + } + }) }}" + rear_backup_skip: "{{ bigboot_rear_backup_skip | default(false) }}" + +- name: Perform a ReaR backup if any disk modifications are to be made + ansible.builtin.import_playbook: rhc.rear.rear_backup + when: + - bigboot_execute_bigboot | bool or bigboot_execute_bigboot | bool + - not bigboot_rear_backup_skip | default(false) | bool ... diff --git a/vars/bigboot_vars.yml b/vars/bigboot_vars.yml index d680b89..825299f 100644 --- a/vars/bigboot_vars.yml +++ b/vars/bigboot_vars.yml @@ -9,7 +9,7 @@ bigboot_reboot_timeout: 1800 bigboot_skip_rear_backup: false # Max value in minutes for the timeout threshold: -bigboot_service_max_timeout: 2 +bigboot_service_max_timeout: 5 # List of services which will be excluded from being # disabled during Bigboot execution: