feat: Переименование geop в cod и добавление ARM64 поддержки

- Переименован пресет geop.yml в cod.yml
- Обновлены все группы с geop на cod
- Добавлена поддержка ARM64 для Astra Linux и RedOS
- Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов
- Улучшены разделители в логах Molecule
- Зашифрован файл vault/secrets.yml
- Обновлена роль devops с поддержкой vault
- Добавлены шаблоны для SSH и sudoers конфигураций
This commit is contained in:
Сергей Антропов
2025-10-27 19:43:26 +03:00
parent c66bb35f97
commit 5543ae4d27
25 changed files with 1531 additions and 931 deletions

View File

@@ -1,227 +0,0 @@
# Быстрый старт - Роль devops
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 3.0.0
## Что делает роль
Роль автоматически:
1. ✅ Создает пользователя `devops`
2. ✅ Генерирует безопасный пароль (30 символов)
3. ✅ Настраивает SSH доступ по ключу
4. ✅ Добавляет права sudo без пароля
5. ✅ Создает домашнюю директорию
6. ✅ Автоматически определяет ОС и настраивает группы
7. ✅ Поддерживает все ОС (Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS)
## Быстрый запуск
### Тестирование роли
```bash
# Lint проверка
make role lint devops
# Тестирование с minimal preset
make role test minimal
# Тестирование конкретной роли
make role test devops
```
### Базовое использование
```bash
# Запуск всех ролей через roles/deploy.yml
make role test minimal
# Запуск только роли devops
ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml
```
### С SSH ключом из vault
```bash
# Создание vault
make vault init
# Добавление SSH ключа в vault/secrets.yml
# Затем запуск с vault паролем
ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
--ask-vault-pass \
-e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
```
## Проверка результата
### В тестовых контейнерах
```bash
# Просмотр логов
docker logs $(docker ps -aq --filter "network=labnet" | head -1)
# Вход в контейнер
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash
# Проверка пользователя
id devops
sudo -l -U devops
ls -la /home/devops/.ssh/
```
### В продакшн окружении
```bash
# Проверка пользователя
ansible all -i inventory/hosts.ini -m shell -a "id devops"
# Проверка sudo прав
ansible all -i inventory/hosts.ini -m shell -a "sudo -l -U devops"
# Проверка SSH директории
ansible all -i inventory/hosts.ini -m shell -a "ls -la /home/devops/.ssh/"
```
## Настройка SSH ключа
### 1. Добавление ключа в vault
Создайте/отредактируйте `vault/secrets.yml`:
```bash
# Редактирование vault
make vault edit
# Имя файла: secrets
```
Добавьте SSH ключ:
```yaml
devops_ssh_keys:
public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... your@email.com"
```
### 2. Запуск с SSH ключом
```bash
ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
--ask-vault-pass \
-e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
```
## Кастомизация
### Изменить имя пользователя
```yaml
vars:
devops_user:
name: "myuser"
home: "/home/myuser"
```
### Изменить длину пароля
```yaml
vars:
devops_password:
length: 40
```
### Добавить группы
```yaml
vars:
devops_user:
groups: ["sudo", "docker", "wheel", "adm"]
```
### Использование в playbook
```yaml
- hosts: all
become: true
vars:
devops_user:
name: "admin"
groups: ["sudo", "docker"]
devops_password:
length: 40
roles:
- devops
```
## Безопасность
- 🔒 Пароль генерируется автоматически и не сохраняется в логах
- 🔑 SSH доступ только по ключу (если настроен)
- 🛡️ Пользователь добавлен в sudoers с правами NOPASSWD
- 📁 SSH директория имеет правильные права доступа (700)
- 🔐 Пароль содержит минимум 4 символа каждого типа
## Поддерживаемые ОС
- ✅ 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
- ✅ Astra Linux 1.7
- ✅ ALT Linux P9
- ✅ RED OS 9
## Troubleshooting
### Проблема: Пользователь не создан
```bash
# Проверьте права sudo
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo whoami
```
### Проблема: SSH не работает
```bash
# Проверьте права на SSH директорию
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) ls -la /home/devops/.ssh/
```
### Проблема: Sudo не работает
```bash
# Проверьте sudoers файл
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo visudo -c
```
## Теги
Роль поддерживает следующие теги:
- `devops` - основная функциональность
- `user-management` - управление пользователями
- `security` - настройки безопасности
- `ssh` - SSH конфигурация
- `sudo` - настройки sudo
Пример использования:
```bash
# Только создание пользователя
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags devops
# Только SSH настройка
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags ssh
```
## Дополнительная информация
- 📖 Полная документация: `roles/devops/README.md`
- 🧪 Тесты: `roles/devops/tests/test.yml`
- 📝 Примеры: `roles/devops/examples.yml`
---
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru