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
- Добавлена автоматическая детекция ОС и настройка групп пользователя - Поддержка всех ОС из dockerfiles: Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS - Автоматический выбор групп: sudo для Ubuntu/Debian, wheel для RHEL-семейства - Обновлена документация с примерами для разных ОС - Добавлены тесты для проверки универсальности - Исправлены ошибки линтера в meta/main.yml Роль теперь работает на всех системах из dockerfiles без дополнительной настройки.
177 lines
4.6 KiB
Markdown
177 lines
4.6 KiB
Markdown
# Роль 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)
|
||
- **Astra Linux** (1.7)
|
||
- **ALT Linux** (p9)
|
||
- **RedOS** (9)
|
||
|
||
### Автоматическое определение ОС
|
||
|
||
Роль автоматически определяет операционную систему и настраивает:
|
||
- **Группы пользователя**: `sudo` для Ubuntu/Debian, `wheel` для RHEL-семейства
|
||
- **Путь к sudoers**: `/etc/sudoers.d/devops`
|
||
- **Валидация sudoers**: `visudo -cf %s`
|
||
|
||
## Теги
|
||
|
||
- `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 |