- Переименован пресет geop.yml в cod.yml - Обновлены все группы с geop на cod - Добавлена поддержка ARM64 для Astra Linux и RedOS - Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов - Улучшены разделители в логах Molecule - Зашифрован файл vault/secrets.yml - Обновлена роль devops с поддержкой vault - Добавлены шаблоны для SSH и sudoers конфигураций
Роль devops
Универсальная роль для создания пользователя devops с SSH ключами и sudo правами на всех поддерживаемых операционных системах.
Автор
Сергей Антропов
Сайт: https://devops.org.ru
Описание
Роль devops создает универсального пользователя для DevOps задач со следующими возможностями:
- ✅ Создание пользователя
devopsс настраиваемым UID/GID - ✅ Установка пароля длиной 30 символов из vault
- ✅ Настройка sudo прав без ввода пароля
- ✅ Добавление SSH публичного ключа для подключения
- ✅ Поддержка всех ОС из dockerfiles/
- ✅ Детальное логирование и проверки
- ✅ Уведомления о статусе выполнения
Поддерживаемые ОС
- Red Hat семейство: RHEL 7/8/9, CentOS 7/8/9, AlmaLinux 8, Rocky Linux 8
- Debian семейство: Debian 9/10/11/12, Ubuntu 20.04/22.04/24.04
- SUSE: SLES 15.x
- Alpine: 3.15+
- Российские ОС: Astra Linux 1.7, RED OS 7/9, ALT Linux 9/10
Требования
- Ansible >= 2.9
- Python >= 3.6
- Доступ к vault с секретами
- Права sudo/root на целевых хостах
Переменные
Основные переменные
| Переменная | По умолчанию | Описание |
|---|---|---|
devops_user |
devops |
Имя пользователя |
devops_group |
devops |
Основная группа пользователя |
devops_home |
/home/devops |
Домашняя директория |
devops_shell |
/bin/bash |
Оболочка пользователя |
devops_uid |
1001 |
UID пользователя |
devops_gid |
1001 |
GID группы |
Переменные из vault
| Переменная | Описание | Обязательная |
|---|---|---|
vault_devops_password |
Пароль пользователя (30 символов) | ✅ |
vault_devops_ssh_public_key |
SSH публичный ключ | ✅ |
Настройки sudo
| Переменная | По умолчанию | Описание |
|---|---|---|
devops_sudo_nopasswd |
true |
Выполнение sudo без пароля |
devops_sudo_commands |
ALL |
Разрешенные команды |
devops_sudoers_file |
/etc/sudoers.d/devops |
Путь к файлу sudoers |
Настройки SSH
| Переменная | По умолчанию | Описание |
|---|---|---|
devops_ssh_dir |
/home/devops/.ssh |
SSH директория |
devops_ssh_authorized_keys |
/home/devops/.ssh/authorized_keys |
Файл с ключами |
devops_ssh_dir_mode |
0700 |
Права на SSH директорию |
devops_ssh_keys_mode |
0600 |
Права на файлы ключей |
Дополнительные группы
| Переменная | По умолчанию | Описание |
|---|---|---|
devops_additional_groups |
['sudo', 'wheel', 'docker', 'systemd-journal'] |
Дополнительные группы |
Примеры использования
Базовое использование
- hosts: all
become: yes
roles:
- devops
vars:
vault_devops_password: "your-30-char-password-here"
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC..."
С кастомными настройками
- hosts: all
become: yes
roles:
- devops
vars:
devops_user: "admin"
devops_home: "/home/admin"
devops_uid: 2000
devops_gid: 2000
devops_additional_groups:
- "sudo"
- "docker"
- "kvm"
vault_devops_password: "your-30-char-password-here"
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC..."
С отключенными проверками
- hosts: all
become: yes
roles:
- devops
vars:
devops_verify_user: false
devops_verify_ssh: false
devops_verify_sudo: false
devops_notify_on_success: false
vault_devops_password: "your-30-char-password-here"
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC..."
Теги
Роль поддерживает следующие теги для выборочного выполнения:
devops- все задачи ролиvalidation- проверка входных параметровpackages- установка пакетовgroup- создание группыuser- создание пользователяpassword- установка пароляssh- настройка SSHkeys- настройка SSH ключейsudo- настройка sudo правpermissions- настройка прав доступаconfig- дополнительная конфигурацияverification- проверка настройкиnotification- уведомления
Примеры использования тегов
# Только создание пользователя и группы
ansible-playbook -i inventory site.yml --tags "user,group"
# Только настройка SSH
ansible-playbook -i inventory site.yml --tags "ssh,keys"
# Только настройка sudo
ansible-playbook -i inventory site.yml --tags "sudo,permissions"
# Пропустить проверки
ansible-playbook -i inventory site.yml --skip-tags "verification"
Обработчики
Роль включает следующие обработчики:
restart ssh service- перезапуск SSH сервисаcheck ssh config- проверка конфигурации SSHlog changes- логирование измененийnotify completion- уведомления о завершенииcleanup temp files- очистка временных файловsecurity check- проверка безопасностиcollect statistics- сбор статистики
Логирование
Роль поддерживает детальное логирование:
- Уровень логирования настраивается через
devops_log_level - Логи записываются в
devops_log_file(по умолчанию/var/log/devops-setup.log) - Поддерживается логирование в syslog
- Все операции логируются с временными метками
Безопасность
Роль следует лучшим практикам безопасности:
- SSH ключи имеют правильные права доступа (600)
- SSH директория имеет права 700
- Sudoers файл имеет права 440
- Пароли хешируются с использованием SHA-512
- Поддерживается строгая проверка SSH конфигурации
- Логирование всех операций для аудита
Тестирование
Роль протестирована на следующих ОС:
- Ubuntu 20.04/22.04/24.04
- Debian 9/10/11/12
- CentOS 7/8/9
- RHEL 7/8/9
- AlmaLinux 8
- Rocky Linux 8
- SLES 15.x
- Alpine 3.15+
- Astra Linux 1.7
- RED OS 7/9
- ALT Linux 9/10
Устранение неполадок
Проблемы с паролем
# Проверка хеша пароля
ansible all -m debug -a "msg={{ 'your-password' | password_hash('sha512') }}"
Проблемы с SSH
# Проверка SSH конфигурации
sudo sshd -t
# Проверка прав доступа
ls -la /home/devops/.ssh/
Проблемы с sudo
# Проверка sudoers файла
sudo visudo -c -f /etc/sudoers.d/devops
# Тест sudo прав
sudo -l -U devops
Лицензия
MIT
Поддержка
- Сайт: https://devops.org.ru
- Автор: Сергей Антропов