This commit is contained in:
2025-11-04 22:16:19 +02:00
parent fa07ec2e70
commit 654e41ed5b

View File

@@ -1,4 +1,3 @@
---
# sot-updater.yml — Read fw on Dev1 + Dev2, publish to NetBox via Rabbit (telemetry mode)
- name: Read fw on Dev1 + Dev2, publish NetBox custom fields (full base, AIRPINGs, soft-fail telemetry)
@@ -109,36 +108,26 @@
nb_small: "{{ nb_kv.get('small', '') }}"
nb_ok_line: "{{ nb_ok_line }}"
# --- Extract upgrade_cmd using a localhost shell (consume stdout_lines, robust to garbling) ---
# --- Extract upgrade_cmd using a localhost shell against HEREDOC with actual content ---
- name: "NB preflight | Capture upgrade_cmd from stdout (shell)"
when: nb_script.stat.exists
delegate_to: localhost
ansible.builtin.shell: |
set -e
# Feed nb_onedevice_update.py output (structured stdout_lines) to awk.
# 1) Prefer exact "NB: upgrade_cmd="
# 2) Fallback to any "NB: ...cmd=" (covers typos like upde_cmd)
# Print first match and exit; otherwise print empty line.
cat <<'EOF' | awk -F'=' '
BEGIN{found=0}
awk -F'=' '
/^[[:space:]]*NB:[[:space:]]*upgrade_cmd[[:space:]]*=/ {
sub(/^[[:space:]]*NB:[[:space:]]*upgrade_cmd[[:space:]]*=/,""); print; found=1; exit
sub(/^[^=]+=[[:space:]]*/,""); print; exit
}
/^[[:space:]]*NB:.*cmd[[:space:]]*=/ {
sub(/^[[:space:]]*NB:[[:space:]]*/,"");
sub(/^[^=]+=[[:space:]]*/,""); print; found=1; exit
sub(/^[^=]+=[[:space:]]*/,""); print; exit
}
END{ if (!found) print "" }
'
EOF
END{ print "" }
' <<'LINES'
{{ (nb_preflight.stdout | default('') | regex_replace('\r','')) }}
LINES
args:
executable: /bin/bash
register: up_cmd_sh
changed_when: false
vars:
# Render the heredoc content as the structured lines; safer than raw joined stdout
EOF: "{{ (nb_preflight.stdout_lines | default([])) | join('\n') }}"
- name: "NB preflight | Normalize + debug upgrade_cmd"
when: nb_script.stat.exists
@@ -147,10 +136,10 @@
nb_upgrade_cmd_raw: "{{ (up_cmd_sh.stdout | default('')) | regex_replace('\r','') | trim }}"
nb_upgrade_cmd: >-
{{
'' if ( (up_cmd_sh.stdout | default('') | trim) | lower ) in ['none','null','']
'' if ((up_cmd_sh.stdout | default('') | trim | lower) in ['none','null',''])
else (up_cmd_sh.stdout | default('') | trim)
}}
nb_upgrade_cmd_len: "{{ ( (up_cmd_sh.stdout | default('') | trim) | length ) }}"
nb_upgrade_cmd_len: "{{ ((up_cmd_sh.stdout | default('') | trim) | length) }}"
- name: "NB preflight | Debug upgrade_cmd"
when: nb_script.stat.exists
delegate_to: localhost
@@ -159,7 +148,6 @@
- "upgrade_cmd raw: '{{ nb_upgrade_cmd_raw }}'"
- "upgrade_cmd parsed: '{{ nb_upgrade_cmd }}' (len={{ nb_upgrade_cmd_len }})"
# --- Detect "cloud vs NetBox (before update) was different" (regex-free, robust)
- name: "NB preflight | Detect whether IP changed (pre-update)"
when: nb_script.stat.exists