diff --git a/mikrotikbackup_clean.yml b/mikrotikbackup_clean.yml index 1245a0e..a9fe0ad 100644 --- a/mikrotikbackup_clean.yml +++ b/mikrotikbackup_clean.yml @@ -69,40 +69,33 @@ tags: backup # ---------------------------- - # Upgrade + # Upgrade (correct MikroTik flow) # ---------------------------- - - name: Check updates (try structured output) + - name: Trigger update check community.routeros.command: - commands: /system package update check-for-updates once as-value - register: update_check_struct - ignore_errors: true + commands: /system package update check-for-updates once + register: update_trigger tags: upgrade - - name: Fallback to plain output if structured failed + - name: Get update info (structured) community.routeros.command: - commands: /system package update check-for-updates - register: update_check_plain - when: update_check_struct is failed + commands: /system package update print as-value + register: update_info + tags: upgrade + + # Optional debug (remove later) + - name: DEBUG update info + debug: + var: update_info.stdout[0] tags: upgrade # ---------------------------- - # Parse versions (structured) + # Parse versions # ---------------------------- - - name: Parse versions from structured output + - name: Parse versions set_fact: - installed_version: "{{ update_check_struct.stdout[0]['installed-version'] | default('unknown') }}" - latest_version: "{{ update_check_struct.stdout[0]['latest-version'] | default('unknown') }}" - when: update_check_struct is succeeded - tags: upgrade - - # ---------------------------- - # Parse versions (fallback regex) - # ---------------------------- - - name: Parse versions from plain output - set_fact: - installed_version: "{{ update_check_plain.stdout[0] | regex_search('installed-version: ([^\\s]+)', '\\1') | default('unknown', true) }}" - latest_version: "{{ update_check_plain.stdout[0] | regex_search('latest-version: ([^\\s]+)', '\\1') | default('unknown', true) }}" - when: update_check_struct is failed + installed_version: "{{ update_info.stdout[0]['installed-version'] | default('unknown') }}" + latest_version: "{{ update_info.stdout[0]['latest-version'] | default('unknown') }}" tags: upgrade # ---------------------------- @@ -123,6 +116,12 @@ msg: "Router={{ router_name }} installed={{ installed_version }} latest={{ latest_version }} upgrade_needed={{ upgrade_needed }}" tags: upgrade + - name: Handle unknown version case + debug: + msg: "WARNING: Could not determine versions on {{ router_name }} (likely no internet)" + when: installed_version == 'unknown' or latest_version == 'unknown' + tags: upgrade + - name: Skip upgrade if already latest debug: msg: "Router {{ router_name }} is already up to date ({{ installed_version }})"