Ansible-Roles/playbooks/fix_apt_sources.yml
2026-05-08 22:12:36 +03:00

59 lines
2.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Исправление источников apt на хостах Debian, у которых ещё остались репозитории Bullseye (Debian 11).
# Заменяет bullseye → bookworm в /etc/apt/sources.list и удаляет сломанные
# сторонние репозитории, у которых больше нет валидных Release-файлов или GPG-ключей.
#
# Запуск (сначала dry-run):
# ansible-playbook -i inventory/prod playbooks/fix_apt_sources.yml --check
# Запуск:
# ansible-playbook -i inventory/prod playbooks/fix_apt_sources.yml
# Ограничить конкретными хостами:
# ansible-playbook -i inventory/prod playbooks/fix_apt_sources.yml --limit zabbix,netxms,svc-node-3
- name: Fix apt sources — upgrade Bullseye repos to Bookworm
hosts: debian
gather_facts: false
become: true
tasks:
- name: Check current codename in /etc/apt/sources.list
ansible.builtin.command: grep -c bullseye /etc/apt/sources.list
register: bullseye_check
changed_when: false
failed_when: bullseye_check.rc not in [0, 1]
- name: Replace bullseye with bookworm in /etc/apt/sources.list
ansible.builtin.replace:
path: /etc/apt/sources.list
regexp: \bbullseye\b
replace: bookworm
when: bullseye_check.rc == 0 and bullseye_check.stdout | int > 0
notify: Update apt cache
- name: Find third-party apt sources with bullseye codename
ansible.builtin.find:
paths: /etc/apt/sources.list.d
patterns: "*.list"
contains: bullseye
register: broken_sources
- name: Show third-party sources that reference bullseye
ansible.builtin.debug:
msg: "Found broken source file: {{ item.path }}"
loop: "{{ broken_sources.files }}"
loop_control:
label: "{{ item.path }}"
- name: Disable broken third-party bullseye repos (rename to .disabled)
ansible.builtin.command: mv {{ item.path }} {{ item.path }}.disabled
args:
removes: "{{ item.path }}"
loop: "{{ broken_sources.files }}"
loop_control:
label: "{{ item.path }}"
notify: Update apt cache
handlers:
- name: Update apt cache
ansible.builtin.apt:
update_cache: true