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

9.8 KiB
Raw Blame History

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

- 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:

  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

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