Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
- roles/ping/QUICKSTART.md - обновлены команды Makefile, добавлены новые возможности - roles/devops/QUICKSTART.md - обновлены команды, добавлена версия 2.0.0 - Добавлены примеры проверки результатов в контейнерах - Обновлены примеры использования с актуальными командами - Добавлены разделы про теги и дополнительные возможности Автор: Сергей Антропов Сайт: https://devops.org.ru
228 lines
5.8 KiB
Markdown
228 lines
5.8 KiB
Markdown
# Быстрый старт - Роль devops
|
||
|
||
**Автор:** Сергей Антропов
|
||
**Сайт:** https://devops.org.ru
|
||
**Версия:** 2.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
|