1731
This commit is contained in:
@@ -177,7 +177,6 @@
|
|||||||
nb_small: "{{ nb_kv.get('small','') }}"
|
nb_small: "{{ nb_kv.get('small','') }}"
|
||||||
nb_ok_line: "{{ nb_ok_line }}"
|
nb_ok_line: "{{ nb_ok_line }}"
|
||||||
|
|
||||||
|
|
||||||
- name: "NB preflight | Detect IP change"
|
- name: "NB preflight | Detect IP change"
|
||||||
when: nb_script.stat.exists
|
when: nb_script.stat.exists
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
@@ -820,6 +819,29 @@
|
|||||||
payload_encoding: "string"
|
payload_encoding: "string"
|
||||||
changed_when: false
|
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 -----------------------
|
# ----------------------- Dev2 auth + firmux -----------------------
|
||||||
- name: Try DEV2 login
|
- name: Try DEV2 login
|
||||||
@@ -1002,7 +1024,6 @@
|
|||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
# ------ LLDP IPv6 fallback (Dev1 → Dev2 on link-local) ------
|
# ------ LLDP IPv6 fallback (Dev1 → Dev2 on link-local) ------
|
||||||
|
|
||||||
- name: Dev1 | Try LLDP-derived Dev2 IPv6 (auth to Dev2 failed, IPv4 LLDP unusable)
|
- name: Dev1 | Try LLDP-derived Dev2 IPv6 (auth to Dev2 failed, IPv4 LLDP unusable)
|
||||||
when:
|
when:
|
||||||
- tunnel_ok | default(false)
|
- tunnel_ok | default(false)
|
||||||
@@ -1100,7 +1121,6 @@
|
|||||||
msg:
|
msg:
|
||||||
- "LLDP IPv6 candidate={{ lldp_dev2_ip6 | default('<none>') }}"
|
- "LLDP IPv6 candidate={{ lldp_dev2_ip6 | default('<none>') }}"
|
||||||
- "LLDP IPv6 auth rc={{ dev2_auth_lldp6.rc | default('n/a') }}"
|
- "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
|
- name: Set dev2_passfile_used_lldp6
|
||||||
when:
|
when:
|
||||||
@@ -1160,7 +1180,6 @@
|
|||||||
failed_when: false
|
failed_when: false
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
|
|
||||||
- name: Dev2 | Read firmux (direct LLDP IP)
|
- name: Dev2 | Read firmux (direct LLDP IP)
|
||||||
when:
|
when:
|
||||||
- tunnel_ok | default(false)
|
- tunnel_ok | default(false)
|
||||||
@@ -1195,7 +1214,6 @@
|
|||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
- name: Dev2 | firmux selection debug
|
- name: Dev2 | firmux selection debug
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
debug:
|
debug:
|
||||||
@@ -1320,7 +1338,6 @@
|
|||||||
failed_when: false
|
failed_when: false
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
|
|
||||||
- name: Dev2 | Select fw_printenv size output
|
- name: Dev2 | Select fw_printenv size output
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
set_fact:
|
set_fact:
|
||||||
@@ -1351,7 +1368,6 @@
|
|||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
- name: Dev2 | Normalize indoor_bootenv value
|
- name: Dev2 | Normalize indoor_bootenv value
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
set_fact:
|
set_fact:
|
||||||
@@ -1385,7 +1401,153 @@
|
|||||||
payload_encoding: "string"
|
payload_encoding: "string"
|
||||||
changed_when: false
|
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:
|
post_tasks:
|
||||||
- name: "✅ Cleanup start"
|
- name: "✅ Cleanup start"
|
||||||
|
|||||||
Reference in New Issue
Block a user