# Быстрый старт - Роль 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