Files
DevOpsLab/roles/repo/tasks/rhel.yml
Сергей Антропов 23e1a6037b Добавлена роль 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
2025-10-30 03:13:35 +03:00

100 lines
3.8 KiB
YAML
Raw 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.

---
# Задачи для 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"