# Роль devops Роль для создания пользователя devops с безопасным паролем, SSH доступом и правами sudo. ## Автор Сергей Антропов Сайт: https://devops.org.ru ## Описание Эта роль выполняет следующие функции: 1. Создание пользователя `devops` 2. Генерация безопасного пароля длиной 30 символов 3. Назначение пароля пользователю 4. Добавление пользователя в sudoers с правами выполнения команд без пароля 5. Настройка SSH доступа через публичный ключ ## Требования - Ansible >= 2.9 - Python >= 3.6 - Права root/sudo для выполнения задач ## Переменные ### Основные переменные (defaults/main.yml) ```yaml # Настройки пользователя devops devops_user: name: "devops" home: "/home/devops" shell: "/bin/bash" groups: ["sudo", "docker"] create_home: true state: "present" # Настройки пароля devops_password: length: 30 special_chars: true min_special: 4 min_upper: 4 min_lower: 4 min_digits: 4 # Настройки sudo devops_sudo: nopasswd: true commands: "ALL" # SSH настройки devops_ssh: authorized_keys_file: "/home/devops/.ssh/authorized_keys" ssh_dir: "/home/devops/.ssh" ssh_dir_mode: "0700" authorized_keys_mode: "0600" ``` ### Переменные из vault/secrets.yml ```yaml # SSH ключи для пользователя devops devops_ssh_keys: public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@example.com" ``` ## Использование ### Базовое использование ```yaml - hosts: all become: true roles: - devops ``` ### С передачей SSH ключа ```yaml - hosts: all become: true vars: devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}" roles: - devops ``` ### С кастомными настройками ```yaml - hosts: all become: true vars: devops_user: name: "mydevops" home: "/home/mydevops" devops_password: length: 40 roles: - devops ``` ## Безопасность - Пароль генерируется автоматически с использованием криптографически стойкого алгоритма - Пароль содержит минимум 4 символа каждого типа (специальные, заглавные, строчные, цифры) - SSH ключи добавляются в authorized_keys для безопасного доступа - Пользователь добавляется в sudoers с правами NOPASSWD для удобства использования ## Поддерживаемые ОС - Ubuntu (focal, jammy) - Debian (bullseye, bookworm) - RHEL (8, 9) - CentOS (8, 9) - Rocky Linux (8, 9) - AlmaLinux (8, 9) ## Теги - `devops` - основная функциональность - `user-management` - управление пользователями - `security` - настройки безопасности - `ssh` - SSH конфигурация - `sudo` - настройки sudo ## Примеры ### Создание пользователя с SSH ключом ```bash ansible-playbook -i inventory/hosts.ini playbook.yml \ --ask-vault-pass \ -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}" ``` ### Проверка создания пользователя ```bash ansible all -i inventory/hosts.ini -m shell -a "id devops" ``` ## Troubleshooting ### Проблема с sudoers Если возникают проблемы с sudoers, проверьте синтаксис: ```bash sudo visudo -c ``` ### Проблема с SSH Проверьте права доступа к SSH директории: ```bash ls -la /home/devops/.ssh/ ``` Должны быть права 700 для директории и 600 для authorized_keys. ## Лицензия MIT