- Создана новая роль 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
9.8 KiB
9.8 KiB
Роль repo
Роль для добавления актуальных репозиториев на различные операционные системы.
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Описание
Эта роль автоматически добавляет следующие репозитории:
- Docker CE - официальный репозиторий Docker
- Docker Compose - репозиторий Docker Compose
- PostgreSQL - официальный репозиторий PostgreSQL
- Patroni - репозиторий Patroni (high-availability для PostgreSQL)
- Elasticsearch - официальный репозиторий Elasticsearch
- 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
- hosts: all
become: yes
roles:
- repo
С дополнительными переменными
- 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
docker_gpg_url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
PostgreSQL GPG URL
postgresql_gpg_url: "https://www.postgresql.org/media/keys/ACCC4CF8.asc"
Elasticsearch GPG URL
elasticsearch_gpg_url: "https://artifacts.elastic.co/GPG-KEY-elasticsearch"
Что делает роль
Для Debian/Ubuntu:
- Устанавливает необходимые пакеты (
ca-certificates,curl,gnupg,lsb-release) - Создает директорию
/usr/share/keyringsдля GPG ключей - Добавляет GPG ключи для Docker, PostgreSQL и Elasticsearch
- Добавляет репозитории для всех указанных программ
- Устанавливает репозиторий Patroni через packagecloud
- Обновляет кэш пакетов (
apt update) - Выполняет обновление системы (
apt upgrade)
Для Astra Linux:
- Устанавливает необходимые пакеты (
ca-certificates,curl,gnupg,lsb-release) - Создает директорию
/usr/share/keyringsдля GPG ключей - Добавляет GPG ключи для Docker, PostgreSQL и Elasticsearch
- Добавляет репозитории для всех указанных программ (использует Debian Buster как базу)
- Устанавливает репозиторий Patroni через packagecloud
- Устанавливает
debian-archive-keyringдля поддержки Debian репозиториев - Добавляет ключ и репозиторий Лаборатории 50 (обновления безопасности, драйверы, Java, Mono, .NET)
- Обновляет кэш пакетов (
apt update) - Выполняет обновление системы (
apt upgrade)
ВАЖНО: Для получения свежих пакетов рекомендуется использовать официальные каналы обновлений (требует подписки).
Для Alt Linux:
- Обновляет кэш пакетов и устанавливает базовые пакеты
- Создает директорию
/usr/share/keyringsдля GPG ключей - Пытается добавить Docker репозиторий (может быть недоступен)
- Добавляет репозиторий Sisyphus alt-sisyphus (rolling release с ежедневными обновлениями)
- Добавляет репозиторий Sisyphus classic (классический репозиторий)
- Добавляет репозиторий Sisyphus contrib (дополнительные пакеты)
- Добавляет репозиторий Autoimports (автоматически собранные свежие пакеты из GitHub/GitLab)
- Обновляет кэш пакетов после добавления всех репозиториев
- Выполняет обновление системы (
apt upgrade)
Примечание: Alt Linux использует свои внутренние репозитории. Sisyphus — основной источник свежих пакетов, но может быть нестабилен. PostgreSQL, Elasticsearch и Patroni обычно доступны в базовых репозиториях.
Для RHEL/CentOS/AlmaLinux/Rocky:
- Устанавливает необходимые пакеты (
yum-utilsилиdnf-plugins-core) - Устанавливает EPEL repository
- Добавляет репозитории Docker, PostgreSQL и Elasticsearch через
yum_repository - Устанавливает репозиторий Patroni через packagecloud
- Обновляет кэш пакетов (
dnf makecache) - Выполняет обновление системы (
dnf/yum upgrade)
Примеры
Установка на Ubuntu 22.04
ansible-playbook -i inventory playbook.yml --become
Установка на CentOS 8
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