Добавлена роль repo для автоматического добавления репозиториев

- Создана новая роль repo для добавления репозиториев на все ОС
- Добавлена поддержка Docker, PostgreSQL, Elasticsearch, Patroni репозиториев
- Реализована специальная поддержка российских дистрибутивов:
  - Astra Linux: добавлены репозитории Lab50 и debian-archive-keyring
  - Alt Linux: добавлены репозитории Sisyphus (alt-sisyphus, classic, contrib) и Autoimports
- Обновлена документация README.md с информацией о новой роли
- Обновлен .ansible-lint для подавления необходимых правил
- Автор: Сергей Антропов, https://devops.org.ru
This commit is contained in:
Сергей Антропов
2025-10-30 03:13:35 +03:00
parent a2316ae780
commit 23e1a6037b
25 changed files with 2495 additions and 1038 deletions

99
roles/repo/tasks/rhel.yml Normal file
View File

@@ -0,0 +1,99 @@
---
# Задачи для RHEL/CentOS/AlmaLinux/Rocky
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
- name: Установить необходимые пакеты для работы с репозиториями (yum)
ansible.builtin.package:
name: yum-utils
state: present
when: ansible_pkg_mgr == 'yum'
- name: Установить необходимые пакеты для работы с репозиториями (dnf)
ansible.builtin.package:
name: dnf-plugins-core
state: present
when: ansible_pkg_mgr == 'dnf'
- name: Установить EPEL repository
ansible.builtin.dnf:
name: epel-release
state: present
when: ansible_distribution in ['RedHat', 'Rocky', 'CentOS', 'AlmaLinux']
- name: Определить корректный ключ для RHEL/CentOS 8
ansible.builtin.set_fact:
rhel_key: "{{ rhel_repos['rhel8'] }}"
when: ansible_distribution_major_version == "8" and os_version_id in ["redhat8", "rhel8", "centos8", "almalinux8"]
- name: Определить корректный ключ для RHEL/CentOS 9
ansible.builtin.set_fact:
rhel_key: "{{ rhel_repos['rhel9'] }}"
when: ansible_distribution_major_version == "9" and os_version_id in ["redhat9", "rhel9", "centos9", "rocky9"]
- name: Добавить репозиторий Docker
ansible.builtin.yum_repository:
name: docker-ce
description: Docker CE Repository
baseurl: "{{ rhel_key['docker_baseurl'] }}"
gpgcheck: yes
gpgkey: "{{ rhel_key['docker_gpgkey'] }}"
enabled: yes
when: rhel_key is defined
notify: "update dnf cache"
- name: Добавить репозиторий PostgreSQL
ansible.builtin.yum_repository:
name: postgresql
description: PostgreSQL Official Repository
baseurl: "{{ rhel_key['postgresql_baseurl'] }}"
gpgcheck: yes
gpgkey: "{{ rhel_key['postgresql_gpgkey'] }}"
enabled: yes
when: rhel_key is defined
notify: "update dnf cache"
- name: Добавить репозиторий Elasticsearch
ansible.builtin.yum_repository:
name: elasticsearch
description: Elasticsearch Repository
baseurl: "{{ rhel_key['elasticsearch_baseurl'] }}"
gpgcheck: yes
gpgkey: "{{ rhel_key['elasticsearch_gpgkey'] }}"
enabled: yes
when: rhel_key is defined
notify: "update dnf cache"
- name: Получить скрипт установки Patroni repository для RHEL/CentOS
ansible.builtin.get_url:
url: "https://packagecloud.io/install/repositories/patroni/patroni/script.rpm.sh"
dest: /tmp/patroni-repo-install.sh
mode: '0755'
- name: Запустить скрипт установки Patroni repository
ansible.builtin.command: bash /tmp/patroni-repo-install.sh
args:
creates: /etc/yum.repos.d/patroni_patroni.repo
notify: "update dnf cache"
- name: Очистить временный файл установки Patroni
ansible.builtin.file:
path: /tmp/patroni-repo-install.sh
state: absent
- name: Обновить кэш пакетов после добавления всех репозиториев
ansible.builtin.command: "{{ ansible_pkg_mgr }} makecache"
register: cache_result
changed_when: "'Complete!' in cache_result.stdout or 'Metadata cache created.' in cache_result.stdout"
- name: Выполнить обновление пакетов через dnf
ansible.builtin.command: dnf upgrade -y
register: dnf_upgrade
changed_when: "'Complete!' in dnf_upgrade.stdout or 'Nothing to do.' not in dnf_upgrade.stdout"
when: ansible_pkg_mgr == "dnf"
- name: Выполнить обновление пакетов через yum
ansible.builtin.command: yum upgrade -y
register: yum_upgrade
changed_when: "'Complete!' in yum_upgrade.stdout or 'Nothing to do.' not in yum_upgrade.stdout"
when: ansible_pkg_mgr == "yum"