Добавлена роль 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
This commit is contained in:
		
							
								
								
									
										208
									
								
								roles/repo/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										208
									
								
								roles/repo/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,208 @@ | ||||
| # Роль 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 | ||||
		Reference in New Issue
	
	Block a user