Files
homelab-infra/infrastructure/oci/ansible/tasks/frr-dn42.yml
T

39 lines
1.4 KiB
YAML

---
- name: 备份升级前 FRR 配置(仅远端)
ansible.builtin.command: cp -a /etc/frr /var/backups/frr-before-dn42
args:
creates: /var/backups/frr-before-dn42
- name: 安装 FRR 官方仓库签名密钥
ansible.builtin.get_url:
url: https://deb.frrouting.org/frr/keys.gpg
dest: /usr/share/keyrings/frrouting.gpg
mode: '0644'
- name: 配置 FRR 10.7 官方仓库
ansible.builtin.copy:
dest: /etc/apt/sources.list.d/frr.list
mode: '0644'
content: |
deb [signed-by=/usr/share/keyrings/frrouting.gpg] https://deb.frrouting.org/frr noble frr-10.7
register: frr_repo
- name: 安装支持 link-local peering 的固定 FRR 版本
ansible.builtin.apt:
name:
- frr=10.7.1-0~ubuntu24.04.1
- frr-pythontools=10.7.1-0~ubuntu24.04.1
update_cache: true
cache_valid_time: '{{ 0 if frr_repo.changed else 3600 }}'
dpkg_options: force-confdef,force-confold
register: frr_package
notify: 重启 FRR
- name: 检查 FRR 后台进程是否仍引用旧二进制
ansible.builtin.shell: readlink /proc/$(cat /run/frr/bgpd.pid)/exe
changed_when: false
register: frr_running
- name: 调度切换已升级的 FRR 进程
ansible.builtin.debug:
msg: 检查进程是否需要重启以使用已安装的 10.7.1
changed_when: "'(deleted)' in frr_running.stdout"
notify: 重启 FRR
- name: 完成 FRR 升级
ansible.builtin.meta: flush_handlers