Files
DevOpsLab/roles/repo/README.md
Сергей Антропов 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

208 lines
9.8 KiB
Markdown
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.

# Роль 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