# Роль repo Роль для добавления актуальных репозиториев на различные операционные системы. **Автор:** Сергей Антропов **Сайт:** https://devops.org.ru ## Описание Эта роль автоматически добавляет следующие репозитории: 1. **Docker CE** - официальный репозиторий Docker 2. **Docker Compose** - репозиторий Docker Compose 3. **PostgreSQL** - официальный репозиторий PostgreSQL 4. **Patroni** - репозиторий Patroni (high-availability для PostgreSQL) 5. **Elasticsearch** - официальный репозиторий Elasticsearch 6. **EPEL** - дополнительный репозиторий для RHEL-семейства (автоматически) После добавления репозиториев выполняется обновление системы (`apt update` / `dnf update`). ## Поддерживаемые операционные системы ### Debian/Ubuntu - Ubuntu 20.04 (focal) - Ubuntu 22.04 (jammy) - Ubuntu 24.04 (noble) - Debian 10 (buster) - Debian 11 (bullseye) - Debian 12 (bookworm) ### Росийские дистрибутивы - Astra Linux 1.7 (на базе Debian) - Alt Linux P9 (Platform 9) - Alt Linux P10 (Platform 10) ### RHEL/CentOS/AlmaLinux/Rocky - RHEL 8 - RHEL 9 - CentOS 8 - CentOS 9 - AlmaLinux 8 - Rocky 9 ## Требования - Ansible 2.9+ - Доступ к интернету для загрузки GPG ключей и установки репозиториев - Привилегии root или sudo ## Использование ### В playbook ```yaml - hosts: all become: yes roles: - repo ``` ### С дополнительными переменными ```yaml - hosts: all become: yes vars: docker_gpg_url: "https://download.docker.com/linux/ubuntu/gpg" roles: - repo ``` ## Структура ``` repo/ ├── defaults/ │ └── main.yml # Переменные по умолчанию ├── handlers/ │ └── main.yml # Обработчики для обновления кэша ├── meta/ │ └── main.yml # Метаданные роли ├── tasks/ │ ├── main.yml # Основные задачи │ ├── debian.yml # Задачи для Debian/Ubuntu │ ├── astra.yml # Задачи для Astra Linux │ ├── alt.yml # Задачи для Alt Linux │ └── rhel.yml # Задачи для RHEL/CentOS/AlmaLinux/Rocky └── vars/ └── main.yml # Переменные репозиториев ``` ## Зависимости Нет зависимостей от других ролей. ## Переменные ### Docker GPG URL ```yaml docker_gpg_url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" ``` ### PostgreSQL GPG URL ```yaml postgresql_gpg_url: "https://www.postgresql.org/media/keys/ACCC4CF8.asc" ``` ### Elasticsearch GPG URL ```yaml elasticsearch_gpg_url: "https://artifacts.elastic.co/GPG-KEY-elasticsearch" ``` ## Что делает роль ### Для Debian/Ubuntu: 1. Устанавливает необходимые пакеты (`ca-certificates`, `curl`, `gnupg`, `lsb-release`) 2. Создает директорию `/usr/share/keyrings` для GPG ключей 3. Добавляет GPG ключи для Docker, PostgreSQL и Elasticsearch 4. Добавляет репозитории для всех указанных программ 5. Устанавливает репозиторий Patroni через packagecloud 6. Обновляет кэш пакетов (`apt update`) 7. Выполняет обновление системы (`apt upgrade`) ### Для Astra Linux: 1. Устанавливает необходимые пакеты (`ca-certificates`, `curl`, `gnupg`, `lsb-release`) 2. Создает директорию `/usr/share/keyrings` для GPG ключей 3. Добавляет GPG ключи для Docker, PostgreSQL и Elasticsearch 4. Добавляет репозитории для всех указанных программ (использует Debian Buster как базу) 5. Устанавливает репозиторий Patroni через packagecloud 6. Устанавливает `debian-archive-keyring` для поддержки Debian репозиториев 7. Добавляет ключ и репозиторий **Лаборатории 50** (обновления безопасности, драйверы, Java, Mono, .NET) 8. Обновляет кэш пакетов (`apt update`) 9. Выполняет обновление системы (`apt upgrade`) **ВАЖНО:** Для получения свежих пакетов рекомендуется использовать официальные каналы обновлений (требует подписки). ### Для Alt Linux: 1. Обновляет кэш пакетов и устанавливает базовые пакеты 2. Создает директорию `/usr/share/keyrings` для GPG ключей 3. Пытается добавить Docker репозиторий (может быть недоступен) 4. Добавляет репозиторий **Sisyphus alt-sisyphus** (rolling release с ежедневными обновлениями) 5. Добавляет репозиторий **Sisyphus classic** (классический репозиторий) 6. Добавляет репозиторий **Sisyphus contrib** (дополнительные пакеты) 7. Добавляет репозиторий **Autoimports** (автоматически собранные свежие пакеты из GitHub/GitLab) 8. Обновляет кэш пакетов после добавления всех репозиториев 9. Выполняет обновление системы (`apt upgrade`) **Примечание:** Alt Linux использует свои внутренние репозитории. Sisyphus — основной источник свежих пакетов, но может быть нестабилен. PostgreSQL, Elasticsearch и Patroni обычно доступны в базовых репозиториях. ### Для RHEL/CentOS/AlmaLinux/Rocky: 1. Устанавливает необходимые пакеты (`yum-utils` или `dnf-plugins-core`) 2. Устанавливает EPEL repository 3. Добавляет репозитории Docker, PostgreSQL и Elasticsearch через `yum_repository` 4. Устанавливает репозиторий Patroni через packagecloud 5. Обновляет кэш пакетов (`dnf makecache`) 6. Выполняет обновление системы (`dnf/yum upgrade`) ## Примеры ### Установка на Ubuntu 22.04 ```bash ansible-playbook -i inventory playbook.yml --become ``` ### Установка на CentOS 8 ```bash ansible-playbook -i inventory playbook.yml --become ``` ## Примечания ### Astra Linux - **ВАЖНО:** Astra Linux ориентирован на стабильность и безопасность - Официальных публичных репозиториев со свежими пакетами нет - Все обновления распространяются через официальные каналы по подписке - **Дополнительно подключаются:** - Репозитории на базе Debian Buster для установки основных пакетов - Репозиторий Лаборатории 50 (обновления безопасности, новые драйверы, Java, Mono, .NET) - Debian archive keyring для поддержки Debian репозиториев - **Рекомендации:** - Использовать официальные каналы обновлений (требует подписки) - Пересобрать пакеты из исходников ALT Linux Sisyphus - Использовать альтернативные дистрибутивы для систем, требующих свежих пакетов ### Alt Linux - **Репозиторий Sisyphus** - главный источник свежих пакетов (rolling release) - Пакеты обновляются ежедневно - Включает как основной (alt-sisyphus), так и классический (classic) репозитории - **Репозиторий Autoimports** - автоматически генерируемые свежие пакеты - Пакеты, собранные автоматически из исходных кодов (GitHub, GitLab) - Самые свежие версии, но могут быть нестабильны - PostgreSQL, Elasticsearch и Patroni обычно доступны в базовых репозиториях Alt Linux - Если пакеты недоступны, можно установить через pip или из исходников ### Общие замечания - **Patroni** для RHEL-семейства устанавливается через pip, репозиторий packagecloud может быть недоступен - **Elasticsearch 8.x** требует наличия Java 11 или выше - После выполнения роли система будет полностью обновлена - При использовании сторонних репозиториев учитывайте возможное влияние на стабильность и поддержку системы ## Лицензия MIT ## Автор Сергей Антропов https://devops.org.ru