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