Files
homelab-infra/infrastructure/oci/ansible/retire-laptop.yml
T

93 lines
2.6 KiB
YAML

---
- name: 确认路由器内部 BGP 已建立
hosts: site_routers
gather_facts: false
tasks:
- name: 确认到 AMD 的邻居
vyos.vyos.vyos_command:
commands: show bgp neighbors 10.255.254.1
register: migration_bgp
changed_when: false
failed_when: "'BGP state = Established' not in migration_bgp.stdout[0]"
- name: 退役 laptop 的 WireGuard 试验端点
hosts: retired_wireguard_sites
become: true
tasks:
- name: 停止并禁用旧隧道
ansible.builtin.systemd_service:
name: wg-quick@wg-oci
state: stopped
enabled: false
- name: 检查原 BGP 试验邻居是否存在
ansible.builtin.command: vtysh -c 'show running-config'
register: laptop_frr
changed_when: false
- name: 只移除本次试验添加的 BGP 节点,保留 NEC 邻居和 OSPF
ansible.builtin.command:
argv:
- vtysh
- -c
- configure terminal
- -c
- router bgp 65001
- -c
- no neighbor 10.255.254.1
- -c
- address-family ipv4 unicast
- -c
- no network 192.168.10.0/24
- -c
- no network 10.60.0.0/24
- -c
- no network 10.61.0.0/24
- -c
- exit-address-family
- -c
- exit
- -c
- no ip protocol bgp route-map OCI-WG-SOURCE
- -c
- no route-map OCI-WG-SOURCE
- -c
- no ip prefix-list OCI-WG-IN
- -c
- no ip prefix-list OCI-WG-OUT
- -c
- end
- -c
- write memory
when: "'neighbor 10.255.254.1 remote-as' in laptop_frr.stdout"
- name: 停止并禁用旧防火墙启动单元
ansible.builtin.systemd_service:
name: oci-wg-firewall
state: stopped
enabled: false
- name: 只删除旧隧道专用防火墙链
ansible.builtin.shell: |
set -eu
changed=0
for pair in INPUT:OCI-WG-IN FORWARD:OCI-WG-FWD; do
parent=${pair%%:*}; chain=${pair#*:}
if iptables -w -nL "$chain" >/dev/null 2>&1; then
while iptables -w -C "$parent" -j "$chain" 2>/dev/null; do
iptables -w -D "$parent" -j "$chain"
done
iptables -w -F "$chain"
iptables -w -X "$chain"
changed=1
fi
done
echo "$changed"
register: retired_chains
changed_when: retired_chains.stdout == '1'
- name: 移除旧的 BGP 配置片段,避免误用
ansible.builtin.file:
path: /etc/frr/oci-wireguard.vtysh
state: absent