This commit is contained in:
2025-11-26 17:31:40 +02:00
parent 6c82e0c8b9
commit 04a68b9a74

View File

@@ -177,7 +177,6 @@
nb_small: "{{ nb_kv.get('small','') }}"
nb_ok_line: "{{ nb_ok_line }}"
- name: "NB preflight | Detect IP change"
when: nb_script.stat.exists
delegate_to: localhost
@@ -820,6 +819,29 @@
payload_encoding: "string"
changed_when: false
# ----------------------- Dev1 hostname (for Dev2 mismatch check) -----------------------
- name: Dev1 | Read kernel hostname
delegate_to: localhost
shell: |
sshpass -p '{{ dev1_pass }}' ssh {{ ssh_opts_common }} \
"{{ dev1_user }}@{{ ansible_host|default(inventory_hostname) }}" \
"cat /proc/sys/kernel/hostname 2>/dev/null || hostname 2>/dev/null || echo ''"
args:
executable: /bin/bash
register: dev1_hostname_raw
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev1 | Normalize hostname
delegate_to: localhost
set_fact:
dev1_hostname: >-
{{
(dev1_hostname_raw.stdout | default('') | trim)
if ((dev1_hostname_raw.stdout | default('') | trim | length) > 0)
else (inventory_hostname | default(''))
}}
# ----------------------- Dev2 auth + firmux -----------------------
- name: Try DEV2 login
@@ -1002,7 +1024,6 @@
ignore_errors: true
# ------ LLDP IPv6 fallback (Dev1 → Dev2 on link-local) ------
- name: Dev1 | Try LLDP-derived Dev2 IPv6 (auth to Dev2 failed, IPv4 LLDP unusable)
when:
- tunnel_ok | default(false)
@@ -1100,7 +1121,6 @@
msg:
- "LLDP IPv6 candidate={{ lldp_dev2_ip6 | default('<none>') }}"
- "LLDP IPv6 auth rc={{ dev2_auth_lldp6.rc | default('n/a') }}"
- "LLDP IPv6 auth stdout='{{ dev2_auth_lldp6.stdout | default('') | trim }}'"
- name: Set dev2_passfile_used_lldp6
when:
@@ -1160,7 +1180,6 @@
failed_when: false
ignore_errors: true
- name: Dev2 | Read firmux (direct LLDP IP)
when:
- tunnel_ok | default(false)
@@ -1195,7 +1214,6 @@
)
}}
- name: Dev2 | firmux selection debug
delegate_to: localhost
debug:
@@ -1320,7 +1338,6 @@
failed_when: false
ignore_errors: true
- name: Dev2 | Select fw_printenv size output
delegate_to: localhost
set_fact:
@@ -1351,7 +1368,6 @@
)
}}
- name: Dev2 | Normalize indoor_bootenv value
delegate_to: localhost
set_fact:
@@ -1385,7 +1401,153 @@
payload_encoding: "string"
changed_when: false
# ----------------------- Dev2 hostname check + publish -----------------------
- name: Dev2 | Read hostname (tunnel)
when:
- tunnel_ok | default(false)
- dev2_passfile_used != 'NONE'
delegate_to: localhost
shell: |
PORT="{{ _local_port }}"
sshpass -f "{{ dev2_passfile_used }}" ssh {{ ssh_opts_common }} \
-o ConnectTimeout={{ ssh_timeout }} \
-p "$PORT" "{{ dev2_ssh_user }}@127.0.0.1" \
"cat /proc/sys/kernel/hostname 2>/dev/null || hostname 2>/dev/null || echo ''"
args:
executable: /bin/bash
register: dev2_hostname_tunnel
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Read hostname (LLDP IPv4)
when:
- tunnel_ok | default(false)
- dev2_passfile_used == 'NONE'
- lldp_dev2_ip | length > 0
- dev2_passfile_used_lldp is defined
- dev2_passfile_used_lldp != 'NONE'
delegate_to: localhost
shell: |
sshpass -f "{{ dev2_passfile_used_lldp }}" ssh \
-o StrictHostKeyChecking=no -o PubkeyAuthentication=no \
-o ConnectTimeout=15 \
"{{ dev2_ssh_user }}@{{ lldp_dev2_ip }}" \
"cat /proc/sys/kernel/hostname 2>/dev/null || hostname 2>/dev/null || echo ''"
args:
executable: /bin/bash
register: dev2_hostname_lldp
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Read hostname (LLDP IPv6 via Dev1)
when:
- tunnel_ok | default(false)
- dev2_passfile_used == 'NONE'
- (dev2_passfile_used_lldp is not defined or dev2_passfile_used_lldp == 'NONE')
- lldp_dev2_ip6 is defined
- lldp_dev2_ip6 | length > 0
- dev2_passfile_used_lldp6 is defined
- dev2_passfile_used_lldp6 != 'NONE'
delegate_to: localhost
shell: |
IP6="{{ lldp_dev2_ip6 }}"
F="{{ dev2_passfile_used_lldp6 }}"
if [ -z "$IP6" ] || [ -z "$F" ] || [ "$F" = "NONE" ]; then
exit 0
fi
sshpass -p '{{ dev1_pass }}' ssh {{ ssh_opts_common }} \
"{{ dev1_user }}@{{ ansible_host|default(inventory_hostname) }}" \
"sshpass -f '/tmp/${F}' ssh \
-o StrictHostKeyChecking=no -o PubkeyAuthentication=no \
-o ConnectTimeout={{ ssh_timeout }} \
'{{ dev2_ssh_user }}@\[${IP6}%{{ dev1_iface }}\]' \
'cat /proc/sys/kernel/hostname 2>/dev/null || hostname 2>/dev/null || echo '''"
args:
executable: /bin/bash
register: dev2_hostname_lldp6
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Select hostname output
delegate_to: localhost
set_fact:
indoor_hostname_raw: >-
{{
(dev2_hostname_tunnel.stdout | default('') | trim)
if (
(dev2_hostname_tunnel is defined) and
((dev2_hostname_tunnel.stdout | default('') | trim | length) > 0)
)
else (
(dev2_hostname_lldp.stdout | default('') | trim)
if (
(dev2_hostname_lldp is defined) and
((dev2_hostname_lldp.stdout | default('') | trim | length) > 0)
)
else (
(dev2_hostname_lldp6.stdout | default('') | trim)
if (
(dev2_hostname_lldp6 is defined) and
((dev2_hostname_lldp6.stdout | default('') | trim | length) > 0)
)
else ''
)
)
}}
- name: Dev2 | Normalize indoor_hostname
delegate_to: localhost
set_fact:
indoor_hostname_value: >-
{{
'unavailable'
if (indoor_hostname_raw | default('') | trim) == ''
else (
(
'!' ~ (indoor_hostname_raw | default('') | trim)
)
if (
(dev1_hostname | default(inventory_hostname))
!= (indoor_hostname_raw | default('') | trim)
)
else (indoor_hostname_raw | default('') | trim)
)
}}
- name: Dev2 | indoor_hostname debug
delegate_to: localhost
debug:
msg:
- "dev1_hostname={{ dev1_hostname | default('n/a') }}"
- "indoor_hostname_raw={{ indoor_hostname_raw | default('n/a') }}"
- "indoor_hostname_value={{ indoor_hostname_value | default('n/a') }}"
- name: Publish Dev2 indoor_hostname custom field
delegate_to: localhost
uri:
url: "http://{{ rmq_host }}:{{ rmq_port }}/api/exchanges/{{ rmq_vhost|urlencode }}/{{ rmq_exchange|urlencode }}/publish"
method: POST
user: "{{ rmq_user }}"
password: "{{ rmq_pass }}"
force_basic_auth: true
status_code: 200
headers: { content-type: "application/json" }
body_format: json
body:
properties: { content_type: "application/json" }
routing_key: "{{ control_queue }}"
payload: "{{ {
'inscope_device': (ansible_hostname|default(inventory_hostname)),
'task_name': 'custom_field_set',
'task_add1': 'indoor_hostname',
'task_result': indoor_hostname_value
} | to_json }}"
payload_encoding: "string"
changed_when: false
post_tasks:
- name: "✅ Cleanup start"