# Роль 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