You've already forked ansible-linux-infra
initial commit
This commit is contained in:
122
roles/repo_management/tasks/main.yml
Normal file
122
roles/repo_management/tasks/main.yml
Normal file
@@ -0,0 +1,122 @@
|
||||
---
|
||||
- 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]
|
||||
Reference in New Issue
Block a user