From 3d09af19d00f0bc6ae2f909572a5a4086eebf5f5 Mon Sep 17 00:00:00 2001 From: jakub Date: Sat, 21 Mar 2026 08:31:48 +0000 Subject: [PATCH] Update mikrotikbackup_clean.yml --- mikrotikbackup_clean.yml | 51 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/mikrotikbackup_clean.yml b/mikrotikbackup_clean.yml index c505005..09dd4dd 100644 --- a/mikrotikbackup_clean.yml +++ b/mikrotikbackup_clean.yml @@ -21,27 +21,27 @@ tags: always - name: Parse router name - set_fact: + ansible.builtin.set_fact: router_name: "{{ identity_raw.stdout[0].split(': ')[1] | trim }}" tags: always - name: Get timestamp - command: date +%Y-%m-%d_%H-%M-%S + ansible.builtin.command: date +%Y-%m-%d_%H-%M-%S register: date_out delegate_to: localhost changed_when: false tags: always - - name: Set timestamp - set_fact: + - name: Set timestamp fact + ansible.builtin.set_fact: ts: "{{ date_out.stdout }}" tags: always # ---------------------------- # Backup # ---------------------------- - - name: Ensure backup directory exists - file: + - name: Ensure local backup directory exists + ansible.builtin.file: path: "{{ backup_dir }}" state: directory mode: "0755" @@ -55,7 +55,7 @@ tags: backup - name: Save export locally - copy: + ansible.builtin.copy: content: "{{ export_cfg.stdout[0] }}" dest: "{{ backup_dir }}/{{ router_name }}-{{ ts }}.rsc" mode: "0600" @@ -63,7 +63,7 @@ tags: backup - name: Mark backup success - set_fact: + ansible.builtin.set_fact: backup_file: "{{ backup_dir }}/{{ router_name }}-{{ ts }}.rsc" tags: backup @@ -76,7 +76,7 @@ tags: upgrade - name: Wait for MikroTik update check - pause: + ansible.builtin.pause: seconds: 5 tags: upgrade @@ -87,16 +87,17 @@ tags: upgrade # ---------------------------- - # SAFE parsing (NO CRASH) + # SAFE parsing (final) # ---------------------------- - name: Parse versions safely - set_fact: + ansible.builtin.set_fact: installed_version: >- {{ (update_info.stdout[0] | regex_search('installed-version: ([^\\s]+)') | default('installed-version: unknown')) | regex_replace('installed-version: ', '') + | trim }} latest_version: >- {{ @@ -104,6 +105,7 @@ | regex_search('latest-version: ([^\\s]+)') | default('latest-version: unknown')) | regex_replace('latest-version: ', '') + | trim }} update_status: >- {{ @@ -111,6 +113,7 @@ | regex_search('status: (.+)') | default('status: unknown')) | regex_replace('status: ', '') + | trim }} update_channel: >- {{ @@ -118,11 +121,12 @@ | regex_search('channel: ([^\\s]+)') | default('channel: unknown')) | regex_replace('channel: ', '') + | trim }} tags: upgrade - name: Debug parsed values - debug: + ansible.builtin.debug: msg: > router={{ router_name }} channel={{ update_channel }} @@ -135,12 +139,12 @@ # Logic # ---------------------------- - name: Detect update failure - set_fact: + ansible.builtin.set_fact: update_failed: "{{ 'error' in (update_status | lower) or 'failed' in (update_status | lower) }}" tags: upgrade - name: Decide upgrade - set_fact: + ansible.builtin.set_fact: upgrade_needed: >- {{ not update_failed and @@ -151,18 +155,18 @@ tags: upgrade - name: Show decision - debug: + ansible.builtin.debug: msg: "Router={{ router_name }} installed={{ installed_version }} latest={{ latest_version }} upgrade_needed={{ upgrade_needed }}" tags: upgrade - name: Skip upgrade - debug: + ansible.builtin.debug: msg: "Router {{ router_name }} is already up to date ({{ installed_version }})" when: not upgrade_needed tags: upgrade # ---------------------------- - # Upgrade + # Upgrade execution # ---------------------------- - name: Install update community.routeros.command: @@ -172,7 +176,7 @@ tags: upgrade - name: Wait for reboot - wait_for_connection: + ansible.builtin.wait_for_connection: delay: 180 timeout: 600 sleep: 10 @@ -189,13 +193,14 @@ tags: upgrade - name: Parse new version - set_fact: + ansible.builtin.set_fact: post_upgrade_version: >- {{ (post_upgrade_info.stdout[0] | regex_search('version: ([^\\s]+)') | default('version: unknown')) | regex_replace('version: ', '') + | trim }} when: upgrade_needed tags: upgrade @@ -204,7 +209,7 @@ # Checkmk result # ---------------------------- - name: Result when no upgrade - set_fact: + ansible.builtin.set_fact: cmk_state: "{{ 2 if update_failed else 0 }}" cmk_output: >- {{ 'CRIT' if update_failed else 'OK' }} - @@ -217,7 +222,7 @@ tags: always - name: Result when upgrade happened - set_fact: + ansible.builtin.set_fact: cmk_state: "{{ 0 if post_upgrade_version == latest_version else 2 }}" cmk_output: >- {{ 'OK' if post_upgrade_version == latest_version else 'CRIT' }} - @@ -231,7 +236,7 @@ # ---------------------------- - name: Send to Checkmk delegate_to: localhost - uri: + ansible.builtin.uri: url: "{{ checkmk_url }}" method: POST headers: @@ -247,6 +252,6 @@ tags: always - name: Show Checkmk response - debug: + ansible.builtin.debug: var: cmk_output tags: always \ No newline at end of file