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:
325
docs/devops-role.md
Normal file
325
docs/devops-role.md
Normal 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
|
||||
Reference in New Issue
Block a user