You've already forked ansible-linux-infra
123 lines
4.4 KiB
YAML
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]
|