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 |