This commit is contained in:
2026-09-23 16:15:13 +03:00
parent be0260ca1e
commit b48aaf9b9c

View File

@@ -2637,91 +2637,128 @@
non_ts_diff_found: true
changed_when: false
- name: Indoor | Normalize Dev2 passfile facts (avoid undefined)
delegate_to: localhost
set_fact:
dev2_passfile_used_lldp: "{{ dev2_passfile_used_lldp | default('NONE') }}"
dev2_passfile_used_lldp6: "{{ dev2_passfile_used_lldp6 | default('NONE') }}"
changed_when: false
# ----------------------- Dev2 payredirect config flag -> payredirect -----------------------
- name: Dev2 | Read payredirect enabled flag
- name: Dev2 | Read payredirect (tunnel)
when:
- (dev2_passfile_used | default('NONE')) != 'NONE'
or ((dev2_passfile_used_lldp | default('NONE')) != 'NONE')
or ((dev2_passfile_used_lldp6 | default('NONE')) != 'NONE')
- tunnel_ok | default(false)
- dev2_passfile_used != 'NONE'
delegate_to: localhost
shell: |
set -o pipefail
# Try every DEV2 shell path that is available.
# Stop only after a path actually returns true/false.
if [ "{{ dev2_passfile_used | default('NONE') }}" != "NONE" ]; then
PORT="{{ _local_port }}"
OUT="$(sshpass -f "{{ dev2_passfile_used }}" ssh {{ ssh_opts_common }} \
-o ConnectTimeout={{ ssh_timeout }} \
-p "$PORT" "{{ dev2_ssh_user }}@127.0.0.1" \
"cat /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1" 2>/dev/null || true)"
case "$(printf '%s' "$OUT" | tr '[:upper:]' '[:lower:]')" in
*true*) echo true; exit 0 ;;
*false*) echo false; exit 0 ;;
esac
fi
if [ "{{ dev2_passfile_used_lldp | default('NONE') }}" != "NONE" ] && [ -n "{{ lldp_dev2_ip | default('') }}" ]; then
OUT="$(sshpass -f "{{ dev2_passfile_used_lldp }}" ssh \
-o StrictHostKeyChecking=no -o PubkeyAuthentication=no \
-o ConnectTimeout=15 \
"{{ dev2_ssh_user }}@{{ lldp_dev2_ip }}" \
"cat /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1" 2>/dev/null || true)"
case "$(printf '%s' "$OUT" | tr '[:upper:]' '[:lower:]')" in
*true*) echo true; exit 0 ;;
*false*) echo false; exit 0 ;;
esac
fi
if [ "{{ dev2_passfile_used_lldp6 | default('NONE') }}" != "NONE" ] && [ -n "{{ lldp_dev2_ip6 | default('') }}" ]; then
IP6="{{ lldp_dev2_ip6 }}"
F="{{ dev2_passfile_used_lldp6 }}"
OUT="$(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 /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1\"" 2>/dev/null || true)"
case "$(printf '%s' "$OUT" | tr '[:upper:]' '[:lower:]')" in
*true*) echo true; exit 0 ;;
*false*) echo false; exit 0 ;;
esac
fi
exit 0
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 /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1"
args:
executable: /bin/bash
register: dev2_payredirect_raw
register: dev2_payredirect_tunnel
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Read payredirect (LLDP IPv4)
when:
- tunnel_ok | default(false)
- dev2_passfile_used == 'NONE'
- (lldp_dev2_ip | default('') | 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 /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1"
args:
executable: /bin/bash
register: dev2_payredirect_lldp
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Read payredirect (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 /tmp/config.json 2>/dev/null | grep -i block -A2 | grep enab | head -n1'"
args:
executable: /bin/bash
register: dev2_payredirect_lldp6
changed_when: false
failed_when: false
ignore_errors: true
- name: Dev2 | Select payredirect output
delegate_to: localhost
set_fact:
payredirect_raw: >-
{{
(dev2_payredirect_tunnel.stdout | default('') | trim)
if (
(dev2_payredirect_tunnel is defined) and
((dev2_payredirect_tunnel.stdout | default('') | trim | length) > 0)
)
else (
(dev2_payredirect_lldp.stdout | default('') | trim)
if (
(dev2_payredirect_lldp is defined) and
((dev2_payredirect_lldp.stdout | default('') | trim | length) > 0)
)
else (
(dev2_payredirect_lldp6.stdout | default('') | trim)
if (
(dev2_payredirect_lldp6 is defined) and
((dev2_payredirect_lldp6.stdout | default('') | trim | length) > 0)
)
else ''
)
)
}}
changed_when: false
- name: Dev2 | Normalize payredirect value
delegate_to: localhost
vars:
payredirect_raw_clean: "{{ dev2_payredirect_raw.stdout | default('') | trim | lower }}"
_payredirect_raw_clean: "{{ payredirect_raw | default('') | trim | lower }}"
set_fact:
payredirect_value: >-
{{
payredirect_raw_clean
if payredirect_raw_clean in ['true', 'false']
else 'na'
}}
{%- if 'true' in _payredirect_raw_clean -%}
true
{%- elif 'false' in _payredirect_raw_clean -%}
false
{%- else -%}
na
{%- endif -%}
changed_when: false
- name: Dev2 | payredirect debug
delegate_to: localhost
debug:
msg:
- "payredirect_raw={{ dev2_payredirect_raw.stdout | default('') | trim }}"
- "tunnel rc={{ dev2_payredirect_tunnel.rc | default('n/a') }} out={{ dev2_payredirect_tunnel.stdout | default('') | trim }} err={{ dev2_payredirect_tunnel.stderr | default('') | trim }}"
- "lldp4 rc={{ dev2_payredirect_lldp.rc | default('n/a') }} out={{ dev2_payredirect_lldp.stdout | default('') | trim }} err={{ dev2_payredirect_lldp.stderr | default('') | trim }}"
- "lldp6 rc={{ dev2_payredirect_lldp6.rc | default('n/a') }} out={{ dev2_payredirect_lldp6.stdout | default('') | trim }} err={{ dev2_payredirect_lldp6.stderr | default('') | trim }}"
- "payredirect_raw={{ payredirect_raw | default('') | trim }}"
- "payredirect_value={{ payredirect_value | default('na') }}"
- name: Scan tracking | Dev2 payredirect outcome
@@ -2764,6 +2801,13 @@
non_ts_diff_found: true
changed_when: false
- name: Indoor | Normalize Dev2 passfile facts (avoid undefined)
delegate_to: localhost
set_fact:
dev2_passfile_used_lldp: "{{ dev2_passfile_used_lldp | default('NONE') }}"
dev2_passfile_used_lldp6: "{{ dev2_passfile_used_lldp6 | default('NONE') }}"
changed_when: false
# ----------------------- Dev2 indoor_ip resolution (ppp0/eth0.4000 preferred) -----------------------
- name: Indoor | Compute fallback connected IP (as used for Dev2 reachability)
delegate_to: localhost