- Создана новая роль 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
208 lines
9.8 KiB
Markdown
208 lines
9.8 KiB
Markdown
# Роль 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 |