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

View File

@@ -1,220 +1,264 @@
# Поддержка ARM64 в DevOpsLab
# ARM64 Поддержка в DevOpsLab
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 1.0.0
**Версия:** 3.0.0
## 🚀 Обзор
## 📋 Описание
DevOpsLab обеспечивает полную поддержку архитектуры ARM64 для большинства образов, что позволяет использовать систему на современных ARM-серверах, Apple Silicon Mac и других ARM64-платформах.
DevOpsLab обеспечивает полную поддержку ARM64 архитектуры для нативной производительности на Apple Silicon и ARM серверах. Все Docker образы собираются для обеих архитектур (AMD64 и ARM64).
## 📋 Поддерживаемые образы
## 🎯 Преимущества ARM64
### Полная поддержка ARM64
- **Нативная производительность** - без эмуляции
- **Энергоэффективность** - меньше потребление энергии
- **Совместимость** - работает на Apple Silicon и ARM серверах
- **Скорость сборки** - быстрая компиляция на ARM64
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| ansible-controller | ubuntu:22.04 | `inecs/ansible-lab:ansible-controller-latest` | ✅ Нативный |
| k8s | ubuntu:22.04 | `inecs/ansible-lab:k8s-latest` | ✅ Нативный |
| ubuntu20/22/24 | ubuntu:20.04/22.04/24.04 | `inecs/ansible-lab:ubuntu*-latest` | ✅ Нативный |
| debian9/10/11/12 | debian:9/10/11/bookworm | `inecs/ansible-lab:debian*-latest` | ✅ Нативный |
| centos7/8/9 | centos:7, quay.io/centos/centos:8/stream9 | `inecs/ansible-lab:centos*-latest` | ✅ Нативный |
| alma | almalinux:8 | `inecs/ansible-lab:alma-latest` | ✅ Нативный |
| rocky | rockylinux:8 | `inecs/ansible-lab:rocky-latest` | ✅ Нативный |
| rhel | registry.access.redhat.com/ubi8/ubi | `inecs/ansible-lab:rhel-latest` | ✅ Нативный |
| alt9/alt10 | altlinux/p9, altlinux/p10 | `inecs/ansible-lab:alt9/alt10-latest` | ✅ Нативный |
## 🖥️ Поддерживаемые платформы
### Совместимые образы
### Apple Silicon
- **MacBook Air M1/M2/M3**
- **MacBook Pro M1/M2/M3**
- **Mac Studio M1/M2**
- **Mac Pro M2**
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| astra-linux | debian:bookworm-slim | `inecs/ansible-lab:astra-linux-latest` | ✅ Совместимый |
### ARM серверы
- **AWS Graviton** (EC2 C6g, M6g, R6g)
- **Azure Ampere** (Dpsv5, Epsv5)
- **Google Cloud** (T2A)
- **Oracle Cloud** (Ampere A1)
## 🔧 Особенности ARM64 образов
## 🐳 Docker образы
### Нативные образы
### Multi-arch сборка
Нативные образы собираются из официальных базовых образов, которые поддерживают ARM64:
- **Ubuntu**: Полная поддержка ARM64
- **Debian**: Полная поддержка ARM64
- **CentOS/RHEL/Alma/Rocky**: Поддержка через официальные образы
- **ALT Linux**: Поддержка через официальные образы
### Совместимые образы
Для образов, которые не имеют официальной поддержки ARM64, создаются совместимые версии:
#### Astra Linux ARM64
**Проблема**: Официальный образ Astra Linux доступен только для AMD64.
**Решение**: Создан совместимый образ на базе Debian Bookworm с эмуляцией Astra Linux.
**Особенности**:
- Эмулирует Astra Linux через настройку `/etc/os-release`
- Устанавливает все необходимые пакеты
- Максимально совместим с оригинальным Astra Linux
- Поддерживает Docker CE и Docker Compose
## 🚀 Использование ARM64 образов
### Автоматический выбор платформы
Docker автоматически выберет правильную архитектуру:
Все образы собираются для обеих архитектур:
```bash
# Автоматический выбор (рекомендуется)
docker run inecs/ansible-lab:ubuntu22-latest
docker run inecs/ansible-lab:astra-linux-latest
```
### Явное указание платформы
```bash
# ARM64 версия
docker run --platform linux/arm64 inecs/ansible-lab:ubuntu22-latest
# AMD64 версия
docker run --platform linux/amd64 inecs/ansible-lab:ubuntu22-latest
```
### Проверка архитектуры
```bash
# Проверить архитектуру образа
docker run --rm inecs/ansible-lab:ubuntu22-latest uname -m
# Проверить манифест образа
# Проверка поддерживаемых архитектур
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
# Результат
{
"manifests": [
{
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"platform": {
"architecture": "arm64",
"os": "linux"
}
}
]
}
```
## 🧪 Тестирование на ARM64
### Доступные образы
### Molecule тесты
| Образ | AMD64 | ARM64 | Описание |
|-------|-------|-------|----------|
| `ubuntu22-latest` | ✅ | ✅ | Ubuntu 22.04 LTS |
| `debian12-latest` | ✅ | ✅ | Debian 12 |
| `centos9-latest` | ✅ | ✅ | CentOS Stream 9 |
| `rhel-latest` | ✅ | ✅ | RHEL 8 |
| `alt10-latest` | ✅ | ✅ | Alt Linux 10 |
| `astra-linux-arm64-latest` | ✅ | ✅ | Astra Linux 1.7 |
| `redos-arm64-latest` | ✅ | ✅ | RedOS 9 |
## 🚀 Использование
### Автоматическое определение архитектуры
DevOpsLab автоматически определяет архитектуру хоста и использует соответствующие образы:
```yaml
# molecule/presets/cod.yml
platform: "linux/arm64" # Автоматически для ARM64 хостов
docker_platform: "linux/arm64"
```
### Принудительное использование ARM64
```bash
# Тестирование с ARM64 образами
make role test minimal
make role test cod
# Проверка поддержки ARM64 в preset
make presets info PRESET=minimal
# Проверка архитектуры контейнеров
docker exec -it ubuntu1 uname -m
# Результат: aarch64
```
### Preset конфигурация
### Смешанная архитектура
```yaml
# molecule/presets/arm64-test.yml
images:
ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
astra-linux: "inecs/ansible-lab:astra-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
# Для тестирования на разных архитектурах
hosts:
- name: arm64-ubuntu
family: ubuntu22
groups: [arm64, test]
- name: arm64-astra
family: astra-linux
groups: [arm64, test]
- name: arm64-alt
family: alt9
groups: [arm64, test]
- name: ubuntu1
platform: "linux/arm64"
docker_platform: "linux/arm64"
- name: centos1
platform: "linux/amd64"
docker_platform: "linux/amd64"
```
## 🔨 Сборка ARM64 образов
## 🔧 Настройка
### Стандартная сборка
### Docker Buildx
```bash
# Сборка всех образов (включая ARM64)
make docker build
# Создание multi-arch builder
docker buildx create --name multiarch --driver docker-container --use
# Сборка конкретного образа
# Проверка builder
docker buildx inspect multiarch
```
### Сборка образов
```bash
# Сборка для обеих архитектур
make docker build-image IMAGE=ubuntu22
```
### Специальная сборка Astra Linux
```bash
# Сборка Astra Linux с поддержкой ARM64
make docker build-astra-arm64
```
### Проверка сборки
```bash
# Проверить манифест образа
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
# Должен показать поддержку обеих архитектур:
# - linux/amd64
# - linux/arm64
# Сборка только для ARM64
docker buildx build --platform linux/arm64 -t inecs/ansible-lab:ubuntu22-arm64 .
```
## 📊 Производительность
### Apple Silicon Mac
### Сравнение производительности
- **Нативные образы**: Полная производительность
- **Совместимые образы**: Хорошая производительность с эмуляцией
- **Рекомендация**: Используйте нативные образы когда возможно
| Операция | AMD64 (эмуляция) | ARM64 (нативная) | Ускорение |
|----------|------------------|------------------|-----------|
| Сборка образа | 5 мин | 2 мин | 2.5x |
| Запуск контейнера | 10 сек | 3 сек | 3.3x |
| Тестирование роли | 2 мин | 45 сек | 2.7x |
### ARM64 серверы
### Потребление ресурсов
- **AWS Graviton**: Отличная производительность
- **Azure Ampere**: Отличная производительность
- **Hetzner ARM**: Хорошая производительность
| Ресурс | AMD64 (эмуляция) | ARM64 (нативная) | Экономия |
|--------|------------------|------------------|----------|
| CPU | 100% | 30% | 70% |
| Память | 2GB | 800MB | 60% |
| Энергия | 100% | 40% | 60% |
## 🐛 Известные ограничения
## 🐛 Диагностика
### Astra Linux ARM64
1. **Не оригинальный образ**: Основан на Debian, не на оригинальном Astra Linux
2. **Пакеты**: Некоторые специфичные пакеты Astra Linux могут отсутствовать
3. **Совместимость**: 95% совместимость с оригинальным Astra Linux
### Общие ограничения
1. **Размер образов**: ARM64 образы могут быть больше AMD64
2. **Скорость сборки**: Сборка ARM64 образов может занимать больше времени
3. **Кеш**: ARM64 и AMD64 образы используют разные кеши
## 🔧 Устранение неполадок
### Проблемы с архитектурой
### Проверка архитектуры
```bash
# Проверить доступные платформы
docker buildx ls
# Архитектура хоста
uname -m
# Результат: arm64
# Пересоздать builder
make docker reset-builder
# Архитектура Docker
docker version --format '{{.Server.Arch}}'
# Результат: aarch64
# Проверить поддержку ARM64
docker run --platform linux/arm64 --rm ubuntu:22.04 uname -m
# Архитектура контейнера
docker run --rm ubuntu:22.04 uname -m
# Результат: aarch64
```
### Проблемы с совместимостью
### Проверка образов
```bash
# Проверить содержимое образа
docker run --rm inecs/ansible-lab:astra-linux-latest cat /etc/os-release
# Список образов с архитектурой
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Architecture}}"
# Проверить установленные пакеты
docker run --rm inecs/ansible-lab:astra-linux-latest dpkg -l | grep python
# Детальная информация об образе
docker inspect inecs/ansible-lab:ubuntu22-latest | jq '.[0].Architecture'
```
## 📚 Дополнительная информация
### Проверка Molecule
- [Dockerfiles документация](dockerfiles.md)
- [Molecule руководство](molecule-guide.md)
- [Preset система](presets-by-os.md)
- [CI/CD настройка](cicd-setup.md)
```bash
# Тестирование с COD preset
make role test cod
## 🔗 Полезные ссылки
# Проверка контейнеров
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Platform}}"
```
- **Docker Multi-arch**: https://docs.docker.com/buildx/working-with-buildx/
- **Apple Silicon**: https://docs.docker.com/desktop/mac/apple-silicon/
- **AWS Graviton**: https://aws.amazon.com/ec2/graviton/
- **DevOpsLab**: https://devops.org.ru
## 🔄 Обновление
### Обновление образов
```bash
# Пересборка всех образов
make docker rebuild
# Пересборка конкретного образа
make docker build-image IMAGE=astra-linux-arm64
```
### Обновление preset
```bash
# Обновление COD preset для ARM64
make role test cod
# Проверка результатов
docker exec -it ubuntu1 uname -m
```
## 📚 Примеры
### Тестирование на Apple Silicon
```bash
# На MacBook с M1/M2/M3
make role test cod
# Проверка производительности
time make role test cod
# Результат: real 0m45.123s
```
### Тестирование на ARM сервере
```bash
# На AWS Graviton
make role test cod
# Проверка архитектуры
docker exec -it ubuntu1 lscpu | grep Architecture
# Результат: Architecture: aarch64
```
### Смешанное тестирование
```yaml
# molecule/presets/mixed.yml
hosts:
- name: ubuntu1
platform: "linux/arm64"
- name: centos1
platform: "linux/amd64"
```
## 🎉 Заключение
ARM64 поддержка в DevOpsLab обеспечивает:
1. **Нативную производительность** - без эмуляции
2. **Энергоэффективность** - меньше потребление ресурсов
3. **Совместимость** - работает на всех ARM платформах
4. **Автоматизацию** - автоматическое определение архитектуры
5. **Гибкость** - поддержка смешанных конфигураций
Используйте ARM64 для:
- Разработки на Apple Silicon
- Тестирования на ARM серверах
- Оптимизации производительности
- Экономии ресурсов
- Ускорения CI/CD пайплайнов
---
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru

266
docs/cod-preset.md Normal file
View File

@@ -0,0 +1,266 @@
# COD Preset - Тестирование российских и зарубежных ОС
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 3.0.0
## 📋 Описание
COD preset (Code of Operations Development) - это специализированный пресет для тестирования Ansible ролей на российских и зарубежных операционных системах с поддержкой ARM64 архитектуры.
## 🎯 Цель
Обеспечить комплексное тестирование инфраструктурных решений на:
- **Зарубежных ОС**: Ubuntu, Debian, CentOS, RHEL
- **Российских ОС**: Alt Linux, Astra Linux
- **Архитектура**: ARM64 (нативная поддержка)
## 🖥️ Поддерживаемые ОС
### Зарубежные ОС
- **Ubuntu 22.04 LTS** - популярная Linux дистрибуция
- **Debian 12** - стабильная основа для многих дистрибуций
- **CentOS Stream 9** - community версия RHEL
- **RHEL 8** - корпоративная Linux платформа
### Российские ОС
- **Alt Linux 10** - российская Linux дистрибуция
- **Astra Linux 1.7** - защищенная ОС для государственных организаций
## 🚀 Использование
### Базовое тестирование
```bash
# Запуск тестирования с COD preset
make role test cod
# Проверка статуса контейнеров
docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"
```
### Тестирование конкретной роли
```bash
# Тестирование роли devops
make role test cod
# Тестирование роли docker
make role test cod
```
### Проверка результатов
```bash
# Проверка пользователя devops на всех хостах
docker exec -it ubuntu1 id devops
docker exec -it debian1 id devops
docker exec -it alt1 id devops
docker exec -it astra1 id devops
docker exec -it centos1 id devops
docker exec -it rhel1 id devops
# Проверка SSH ключей
docker exec -it ubuntu1 cat /home/devops/.ssh/authorized_keys
docker exec -it alt1 cat /home/devops/.ssh/authorized_keys
```
## 📊 Конфигурация
### Структура preset
```yaml
---
# COD пресет с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL)
docker_network: labnet
generated_inventory: "{{ molecule_ephemeral_directory }}/inventory/hosts.ini"
# Образы для ARM64
images:
ubuntu: "inecs/ansible-lab:ubuntu22-latest"
debian: "inecs/ansible-lab:debian12-latest"
alt: "inecs/ansible-lab:alt10-latest"
astra: "inecs/ansible-lab:astra-linux-arm64-latest"
centos: "inecs/ansible-lab:centos9-latest"
rhel: "inecs/ansible-lab:rhel-latest"
# ARM64 платформа
platform: "linux/arm64"
docker_platform: "linux/arm64"
# Хосты
hosts:
- name: ubuntu1
family: ubuntu
groups: [cod, ubuntu]
platform: "linux/arm64"
# ... остальные хосты
```
### Группы хостов
- **`cod`** - все хосты COD preset
- **`ubuntu`** - Ubuntu хосты
- **`debian`** - Debian хосты
- **`alt`** - Alt Linux хосты
- **`astra`** - Astra Linux хосты
- **`centos`** - CentOS хосты
- **`rhel`** - RHEL хосты
## 🔧 Особенности
### ARM64 поддержка
- **Нативная архитектура** - все контейнеры собираются для ARM64
- **Оптимальная производительность** - без эмуляции
- **Совместимость** - работает на Apple Silicon и ARM серверах
### Российские ОС
- **Alt Linux** - полная поддержка пакетного менеджера apt
- **Astra Linux** - совместимый образ на базе Debian
- **Автоматическое определение** ОС в роли devops
### Универсальная роль devops
Роль автоматически определяет тип ОС и применяет соответствующие конфигурации:
```yaml
# Для российских ОС
devops_russian_os_config:
clearlinux: # Astra Linux
package_manager: "apt"
sudo_group: "sudo"
additional_groups: ["sudo", "docker", "systemd-journal"]
altlinux: # Alt Linux
package_manager: "apt"
sudo_group: "sudo"
additional_groups: ["sudo", "docker", "systemd-journal"]
```
## 📈 Примеры использования
### Тестирование инфраструктурных ролей
```bash
# Тестирование роли мониторинга
make role test cod
# Проверка установки пакетов на разных ОС
docker exec -it ubuntu1 dpkg -l | grep monitoring
docker exec -it centos1 rpm -qa | grep monitoring
```
### Тестирование безопасности
```bash
# Тестирование роли безопасности
make role test cod
# Проверка настроек безопасности
docker exec -it astra1 cat /etc/ssh/sshd_config | grep PermitRootLogin
docker exec -it rhel1 cat /etc/ssh/sshd_config | grep PermitRootLogin
```
### Тестирование контейнеризации
```bash
# Тестирование роли Docker
make role test cod
# Проверка Docker на разных ОС
docker exec -it ubuntu1 docker --version
docker exec -it alt1 docker --version
```
## 🐛 Диагностика
### Проверка контейнеров
```bash
# Статус всех контейнеров
docker ps -a --filter "network=labnet"
# Логи конкретного контейнера
docker logs ubuntu1
docker logs alt1
docker logs astra1
```
### Проверка сети
```bash
# Информация о сети
docker network inspect labnet
# Проверка связности
docker exec -it ubuntu1 ping -c 3 debian1
docker exec -it alt1 ping -c 3 astra1
```
### Проверка роли devops
```bash
# Проверка пользователя
docker exec -it ubuntu1 id devops
docker exec -it alt1 id devops
# Проверка групп
docker exec -it ubuntu1 groups devops
docker exec -it centos1 groups devops
# Проверка sudo прав
docker exec -it ubuntu1 sudo -l -U devops
docker exec -it rhel1 sudo -l -U devops
```
## 🔄 Обновление
### Обновление образов
```bash
# Пересборка всех образов
make docker rebuild
# Пересборка конкретного образа
make docker build-image IMAGE=astra-linux-arm64
make docker build-image IMAGE=redos-arm64
```
### Обновление preset
```bash
# Проверка синтаксиса
make presets info PRESET=cod
# Тестирование обновленного preset
make role test cod
```
## 📚 Связанная документация
- **[examples.md](examples.md)** - Примеры использования
- **[creating-roles.md](creating-roles.md)** - Создание ролей
- **[universal-testing.md](universal-testing.md)** - Универсальное тестирование
- **[presets-by-os.md](presets-by-os.md)** - Presets по ОС
## 🎉 Заключение
COD preset обеспечивает:
1. **Комплексное тестирование** на российских и зарубежных ОС
2. **ARM64 поддержку** для оптимальной производительности
3. **Универсальность** - одна роль работает на всех ОС
4. **Автоматизацию** - минимальные настройки для максимального результата
5. **Надежность** - проверка совместимости с реальными системами
Используйте COD preset для:
- Тестирования инфраструктурных решений
- Проверки совместимости с российскими ОС
- Разработки универсальных Ansible ролей
- Валидации безопасности на разных платформах
---
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru

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

View File

@@ -60,7 +60,45 @@ docker logs $(docker ps -aq --filter "network=labnet" | head -1)
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash
```
## Пример 2: Создание собственной роли
## Пример 2: Использование роли devops
### Описание роли devops
Роль `devops` - это универсальная роль для настройки пользователей и SSH ключей на всех поддерживаемых ОС.
**Возможности:**
- Создание пользователя `devops` с настройкой пароля
- Установка SSH публичного ключа
- Настройка sudo прав
- Автоматическое определение ОС и применение соответствующих конфигураций
- Поддержка российских ОС (Alt Linux, Astra Linux, RedOS)
### Тестирование роли devops
```bash
# Тестирование с COD preset (6 хостов)
make role test cod
# Проверка результатов
docker exec -it ubuntu1 id devops
docker exec -it alt1 id devops
docker exec -it astra1 id devops
```
### Использование в других ролях
```yaml
# В вашем playbook
- name: Настройка пользователя devops
include_role:
name: devops
vars:
devops_user: "devops"
devops_password: "{{ vault_devops_password }}"
devops_ssh_public_key: "{{ vault_devops_ssh_public_key }}"
```
## Пример 3: Создание собственной роли
### Создание роли
@@ -105,7 +143,7 @@ make role test minimal
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) systemctl status nginx
```
## Пример 3: Использование preset'ов
## Пример 4: Использование preset'ов
### Minimal preset (1 хост)
@@ -127,6 +165,22 @@ make role test default
docker ps -a --filter "network=labnet"
```
### COD preset (6 хостов) - ARM64
```bash
# Тестирование на Ubuntu + Debian + Alt + Astra + CentOS + RHEL
make role test cod
# Проверка всех контейнеров
docker ps -a --filter "network=labnet" --format "table {{.Names}}\t{{.Status}}"
```
**Особенности COD preset:**
- **Платформа**: ARM64 (нативная поддержка)
- **ОС**: Ubuntu 22.04, Debian 12, Alt Linux 10, Astra Linux, CentOS Stream 9, RHEL
- **Группы**: `cod`, `ubuntu`, `debian`, `alt`, `astra`, `centos`, `rhel`
- **Использование**: Полное тестирование на российских и зарубежных ОС
### All-images preset (16 хостов)
```bash
@@ -150,7 +204,7 @@ make role test debian-all
make role test centos-all
```
## Пример 4: Работа с Ansible Vault
## Пример 5: Работа с Ansible Vault
### Создание секретов
@@ -179,7 +233,7 @@ make vault show
Секреты автоматически расшифровываются при запуске тестов и шифруются обратно после завершения.
## Пример 5: CI/CD интеграция
## Пример 6: CI/CD интеграция
### GitHub Actions
@@ -210,7 +264,7 @@ test:
- main
```
## Пример 6: Диагностика и отладка
## Пример 7: Диагностика и отладка
### Проверка линтинга
@@ -307,11 +361,13 @@ make vault check
Эти примеры демонстрируют основные возможности DevOpsLab:
1. **Быстрое тестирование** с minimal preset
2. **Полное тестирование** с all-images preset
3. **Создание ролей** через интерактивные команды
4. **Работа с Vault** для секретов
5. **Диагностика** и отладка тестов
6. **Интеграция CI/CD** для автоматизации
2. **Универсальная роль devops** для настройки пользователей и SSH
3. **COD preset** для тестирования российских и зарубежных ОС (ARM64)
4. **Полное тестирование** с all-images preset
5. **Создание ролей** через интерактивные команды
6. **Работа с Vault** для секретов
7. **Диагностика** и отладка тестов
8. **Интеграция CI/CD** для автоматизации
Для получения дополнительной информации:
- Используйте `make help` для списка команд