From 5b24f605b661b4d385090d957db82bb75d545f8a Mon Sep 17 00:00:00 2001 From: Chris Hammer Date: Mon, 11 Nov 2024 10:24:58 -0500 Subject: [PATCH] updates to logic flow --- defaults/main.yml | 5 ++++ tasks/check_boot_id.yml | 53 ++++++++++++++++++++++++----------------- 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index e3b6fce..bfb89aa 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -14,4 +14,9 @@ verified_reboot_wait_sleep: 10 verified_reboot_wait_delay: 70 # Maximum number of seconds to wait for. +# +# We need to ensure this is long enough to cover ANY reboot +# from either Bigboot or IPU based reboots using this +# +# Default: 1800 (30mins) verified_reboot_wait_timeout: 1800 diff --git a/tasks/check_boot_id.yml b/tasks/check_boot_id.yml index a926a4b..bb2c03e 100644 --- a/tasks/check_boot_id.yml +++ b/tasks/check_boot_id.yml @@ -1,38 +1,47 @@ --- -- name: Wait for connection to host - ansible.builtin.wait_for_connection: - connect_timeout: "{{ verified_reboot_wait_conn_timeout }}" - sleep: "{{ verified_reboot_wait_sleep }}" - delay: "{{ verified_reboot_wait_delay }}" - timeout: "{{ verified_reboot_wait_timeout }}" +- name: Max check count reached + ansible.builtin.fail: + msg: "Max check count ({{ max_reboot_check }}) reached. Aborting after {{ reboot_check_count }} tries." + when: + - reboot_check_count | int >= max_reboot_check - name: Increment check count ansible.builtin.set_fact: - verified_reboot_check_count: - "{{ 1 if verified_reboot_check_count is undefined else verified_reboot_check_count | int + 1 }}" + reboot_check_count: "{{ reboot_check_count | int + 1 }}" -- name: Capture post-reboot boot ID +- name: Current Iteration + ansible.builtin.debug: + msg: "{{ reboot_check_count }}" + verbosity: 1 + +- name: Wait for host to connect or try again + block: + - name: Wait for connection to host + ansible.builtin.wait_for_connection: + connect_timeout: "{{ verified_reboot_wait_conn_timeout }}" + sleep: "{{ verified_reboot_wait_sleep }}" + delay: "{{ verified_reboot_wait_delay }}" + timeout: "{{ verified_reboot_wait_timeout }}" + rescue: + - name: Re-check host status - RESCUE + ansible.builtin.include_tasks: check_boot_id.yml + +- name: Capture boot ID post reboot ansible.builtin.slurp: - src: "{{ verified_reboot_bootid_file }}" - register: verified_reboot_post_boot_id_raw + src: "{{ bootid_file }}" + register: post_reboot_boot_id_raw - name: Set post-reboot boot ID ansible.builtin.set_fact: - verified_reboot_post_boot_id: "{{ verified_reboot_post_boot_id_raw['content'] | b64decode | trim }}" + post_reboot_boot_id: "{{ post_reboot_boot_id_raw['content'] | b64decode | trim }}" - name: Debug boot IDs ansible.builtin.debug: - msg: "{{ verified_reboot_pre_boot_id }} == {{ verified_reboot_post_boot_id }}" + msg: "{{ pre_reboot_boot_id }} == {{ post_reboot_boot_id }}" verbosity: 1 -- name: Max check count exception - ansible.builtin.fail: - msg: "Max check count ({{ verified_reboot_max_checks }}) reached. Aborting." - when: - - verified_reboot_check_count | int >= verified_reboot_max_checks - -- name: Re-check host reboot status +- name: Re-check host status ansible.builtin.include_tasks: check_boot_id.yml when: - - verified_reboot_pre_boot_id == verified_reboot_post_boot_id - - verified_reboot_check_count | int < verified_reboot_max_checks + - pre_reboot_boot_id == post_reboot_boot_id + - reboot_check_count | int < max_reboot_check