Files
2026-08-19 09:51:43 +02:00

123 lines
4.4 KiB
YAML

---
- name: Ensure python3-debian is installed (required by deb822_repository)
ansible.builtin.package:
name: python3-debian
state: present
when: ansible_facts['os_family'] == "Debian"
tags: [repo_management]
- name: Configure internal/custom yum repositories (RedHat family)
ansible.builtin.yum_repository:
name: "{{ item.name }}"
description: "{{ item.description | default(item.name) }}"
baseurl: "{{ item.baseurl }}"
gpgcheck: "{{ item.gpgcheck | default(true) }}"
gpgkey: "{{ item.gpgkey | default(omit) }}"
enabled: "{{ item.enabled | default(true) }}"
loop: "{{ custom_yum_repos }}"
loop_control:
label: "{{ item.name }}"
when: ansible_facts['os_family'] == "RedHat" and custom_yum_repos | length > 0
tags: [repo_management]
- name: Configure internal/custom apt repositories (Debian family)
ansible.builtin.deb822_repository:
name: "{{ item.name }}"
types: deb
uris: "{{ item.uris }}"
suites: "{{ item.suites }}"
components: "{{ item.components | default(omit) }}"
signed_by: "{{ item.signed_by | default(omit) }}"
loop: "{{ custom_apt_repos }}"
loop_control:
label: "{{ item.name }}"
when: ansible_facts['os_family'] == "Debian" and custom_apt_repos | length > 0
tags: [repo_management]
- name: Probe internet connectivity
ansible.builtin.uri:
url: "{{ repo_mgmt_internet_check_url }}"
method: HEAD
timeout: 5
status_code: [200, 301, 302, 403]
register: repo_management_internet_probe
failed_when: false
when: repo_mgmt_check_internet | bool
tags: [repo_management]
- name: Set internet availability fact
ansible.builtin.set_fact:
repo_management_internet_available: "{{ (repo_management_internet_probe is defined) and (repo_management_internet_probe.status is defined) and (repo_management_internet_probe.status | default(0) in [200, 301, 302, 403]) }}"
tags: [repo_management]
- name: Report internet availability
ansible.builtin.debug:
msg: "Internet access on {{ inventory_hostname }}: {{ 'available' if repo_management_internet_available else 'not available / check disabled' }}"
tags: [repo_management]
- name: Enable CRB repository (RedHat family, internet access required)
community.general.dnf_config_manager:
name: crb
state: enabled
when:
- ansible_facts['os_family'] == "RedHat"
- repo_management_internet_available | default(false)
- crb_enabled | bool
tags: [repo_management]
- name: Install EPEL release package (RedHat family, internet access required)
ansible.builtin.dnf:
name: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ epel_major_version }}.noarch.rpm"
state: present
disable_gpg_check: false
when:
- ansible_facts['os_family'] == "RedHat"
- repo_management_internet_available | default(false)
- epel_enabled | bool
tags: [repo_management]
- name: Warn if EPEL/CRB requested but no internet access
ansible.builtin.debug:
msg: "EPEL/CRB requested but no internet access detected on {{ inventory_hostname }}. Add an internal mirror via custom_yum_repos instead."
when:
- ansible_facts['os_family'] == "RedHat"
- not (repo_management_internet_available | default(false))
- (epel_enabled | bool) or (crb_enabled | bool)
tags: [repo_management]
- name: Enable universe/multiverse components (Ubuntu, internet access required)
ansible.builtin.deb822_repository:
name: ubuntu-universe-multiverse
types: deb
uris: "http://archive.ubuntu.com/ubuntu"
suites:
- "{{ ansible_facts['distribution_release'] }}"
- "{{ ansible_facts['distribution_release'] }}-updates"
components:
- universe
- multiverse
when:
- ansible_facts['distribution'] == "Ubuntu"
- repo_management_internet_available | default(false)
- ubuntu_universe_enabled | bool
tags: [repo_management]
- name: Enable backports component (Debian, internet access required)
ansible.builtin.deb822_repository:
name: debian-backports
types: deb
uris: "http://deb.debian.org/debian"
suites: "{{ ansible_facts['distribution_release'] }}-backports"
components: main
when:
- ansible_facts['distribution'] == "Debian"
- repo_management_internet_available | default(false)
- debian_backports_enabled | bool
tags: [repo_management]
- name: Refresh apt cache after repository changes (Debian family)
ansible.builtin.apt:
update_cache: true
when: ansible_facts['os_family'] == "Debian"
tags: [repo_management]