docs: Обновление документации и исправление RHEL образа

- Обновлен README.md с новыми возможностями COD preset и роли devops
- Добавлена документация по COD preset (docs/cod-preset.md)
- Добавлена документация по роли devops (docs/devops-role.md)
- Обновлена документация по ARM64 поддержке (docs/arm64-support.md)
- Обновлены примеры использования (docs/examples.md)
- Исправлен Dockerfile для RHEL с Python 3.11 из EPEL
- Обновлен COD preset с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL)
- Улучшена роль devops с поддержкой российских ОС
- Добавлен CHANGELOG.md с историей изменений
- Все изменения протестированы на ARM64 архитектуре
This commit is contained in:
Сергей Антропов
2025-10-27 20:27:45 +03:00
parent 5ea320ce9a
commit 1b6db7445d
9 changed files with 1030 additions and 185 deletions

325
docs/devops-role.md Normal file
View File

@@ -0,0 +1,325 @@
# Роль devops - Универсальная настройка пользователей и SSH
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 3.0.0
## 📋 Описание
Роль `devops` - это универсальная Ansible роль для настройки пользователей и SSH ключей на всех поддерживаемых операционных системах. Роль автоматически определяет тип ОС и применяет соответствующие конфигурации.
## 🎯 Возможности
- **Создание пользователя** `devops` с настройкой пароля
- **Установка SSH публичного ключа** для безопасного доступа
- **Настройка sudo прав** с гибкой конфигурацией
- **Автоматическое определение ОС** и применение соответствующих настроек
- **Поддержка российских ОС** (Alt Linux, Astra Linux, RedOS)
- **Универсальность** - одна роль работает на всех платформах
## 🖥️ Поддерживаемые ОС
### Зарубежные ОС
- **Ubuntu** 20.04, 22.04, 24.04
- **Debian** 9, 10, 11, 12
- **CentOS** 7, 8, 9
- **RHEL** 8, 9
- **AlmaLinux** 8, 9
- **Rocky Linux** 8, 9
### Российские ОС
- **Alt Linux** 9, 10
- **Astra Linux** 1.7 (совместимый образ)
- **RedOS** 9 (совместимый образ)
## 🚀 Использование
### Базовое использование
```yaml
---
- name: Настройка пользователя devops
hosts: all
become: true
roles:
- devops
vars:
devops_user: "devops"
devops_password: "{{ vault_devops_password }}"
devops_ssh_public_key: "{{ vault_devops_ssh_public_key }}"
```
### С кастомными настройками
```yaml
---
- name: Настройка пользователя devops
hosts: all
become: true
roles:
- devops
vars:
devops_user: "admin"
devops_password: "{{ vault_admin_password }}"
devops_ssh_public_key: "{{ vault_admin_ssh_key }}"
devops_additional_groups: ["sudo", "docker", "wheel"]
devops_sudo_nopasswd: true
```
## ⚙️ Переменные
### Основные переменные
| Переменная | Описание | По умолчанию |
|------------|----------|--------------|
| `devops_user` | Имя пользователя | `devops` |
| `devops_password` | Пароль пользователя | `""` |
| `devops_ssh_public_key` | SSH публичный ключ | `""` |
| `devops_additional_groups` | Дополнительные группы | `["sudo"]` |
| `devops_sudo_nopasswd` | Sudo без пароля | `false` |
| `devops_shell` | Оболочка пользователя | `/bin/bash` |
### Vault переменные
| Переменная | Описание | Пример |
|------------|----------|--------|
| `vault_devops_password` | Пароль из vault | `"secure_password"` |
| `vault_devops_ssh_public_key` | SSH ключ из vault | `"ssh-rsa AAAAB3..."` |
## 🔧 Конфигурация по ОС
### Автоматическое определение
Роль автоматически определяет ОС и применяет соответствующие настройки:
```yaml
# Для Debian/Ubuntu
devops_debian_config:
package_manager: "apt"
sudo_group: "sudo"
additional_groups: ["sudo", "docker", "systemd-journal"]
# Для RHEL/CentOS
devops_rhel_config:
package_manager: "yum"
sudo_group: "wheel"
additional_groups: ["wheel", "docker", "systemd-journal"]
# Для российских ОС
devops_russian_os_config:
clearlinux: # Astra Linux
package_manager: "apt"
sudo_group: "sudo"
altlinux: # Alt Linux
package_manager: "apt"
sudo_group: "sudo"
```
## 📊 Примеры использования
### Тестирование с COD preset
```bash
# Тестирование на всех ОС
make role test cod
# Проверка результатов
docker exec -it ubuntu1 id devops
docker exec -it alt1 id devops
docker exec -it astra1 id devops
```
### Использование в других ролях
```yaml
---
- name: Настройка инфраструктуры
hosts: all
become: true
roles:
- devops # Сначала настраиваем пользователя
- docker # Затем устанавливаем Docker
- monitoring # И мониторинг
```
### Создание пользователей для разных целей
```yaml
---
- name: Настройка пользователей
hosts: all
become: true
tasks:
- name: Создание пользователя devops
include_role:
name: devops
vars:
devops_user: "devops"
devops_password: "{{ vault_devops_password }}"
devops_ssh_public_key: "{{ vault_devops_ssh_key }}"
- name: Создание пользователя admin
include_role:
name: devops
vars:
devops_user: "admin"
devops_password: "{{ vault_admin_password }}"
devops_ssh_public_key: "{{ vault_admin_ssh_key }}"
devops_additional_groups: ["sudo", "docker", "wheel"]
```
## 🔐 Безопасность
### SSH ключи
```yaml
# В vault/secrets.yml
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC..."
vault_devops_password: "secure_password_123"
```
### Sudo права
```yaml
# Базовые sudo права
devops_sudo_nopasswd: false
# Расширенные права
devops_additional_groups: ["sudo", "docker", "wheel", "systemd-journal"]
```
## 🐛 Диагностика
### Проверка пользователя
```bash
# Проверка существования пользователя
id devops
# Проверка групп
groups devops
# Проверка sudo прав
sudo -l -U devops
```
### Проверка SSH
```bash
# Проверка SSH ключей
cat /home/devops/.ssh/authorized_keys
# Проверка прав доступа
ls -la /home/devops/.ssh/
```
### Проверка конфигурации
```bash
# Проверка sudo конфигурации
cat /etc/sudoers.d/devops
# Проверка SSH конфигурации
grep -i "permitrootlogin" /etc/ssh/sshd_config
```
## 📚 Шаблоны
### SSH конфигурация
```jinja2
# templates/devops_ssh_config.j2
# SSH конфигурация для пользователя {{ devops_user }}
Match User {{ devops_user }}
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
```
### Sudo конфигурация
```jinja2
# templates/devops_sudoers.j2
# Sudo права для пользователя {{ devops_user }}
{{ devops_user }} ALL=(ALL) {% if devops_sudo_nopasswd %}NOPASSWD:{% endif %}ALL
```
## 🔄 Обновление
### Обновление роли
```bash
# Проверка синтаксиса
make role lint devops
# Тестирование
make role test cod
# Развертывание
make role deploy
```
### Обновление переменных
```bash
# Редактирование vault
make vault edit
# Имя файла: secrets
# Проверка vault
make vault check
```
## 📈 Лучшие практики
### 1. Используйте Vault для секретов
```yaml
# Хорошо
devops_password: "{{ vault_devops_password }}"
# Плохо
devops_password: "hardcoded_password"
```
### 2. Настраивайте группы по необходимости
```yaml
# Для Docker хостов
devops_additional_groups: ["sudo", "docker"]
# Для мониторинга
devops_additional_groups: ["sudo", "systemd-journal"]
```
### 3. Используйте условную логику
```yaml
# В вашем playbook
- name: Настройка devops пользователя
include_role:
name: devops
when: ansible_os_family in ['Debian', 'RedHat', 'Altlinux', 'Clearlinux']
```
## 🎉 Заключение
Роль `devops` обеспечивает:
1. **Универсальность** - работает на всех поддерживаемых ОС
2. **Автоматизацию** - минимальные настройки для максимального результата
3. **Безопасность** - правильная настройка SSH и sudo
4. **Гибкость** - настройка под любые требования
5. **Надежность** - проверенная конфигурация для всех платформ
Используйте роль `devops` для:
- Настройки базовых пользователей
- Установки SSH ключей
- Конфигурации sudo прав
- Подготовки инфраструктуры
- Тестирования на разных ОС
---
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru