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
				
			- Добавлен параметр для указания конкретной роли: make role lint [role] - Без параметра проверяются все роли: make role lint - Добавлена валидация существования роли с показом доступных ролей - Обновлена справка в Makefile с примерами использования - Исправлены ошибки линтера: trailing spaces и комментарии Примеры использования: - make role lint - проверить все роли - make role lint devops - проверить только роль devops - make role lint ping - проверить только роль ping
Роль devops
Роль для создания пользователя devops с безопасным паролем, SSH доступом и правами sudo.
Автор
Сергей Антропов
Сайт: https://devops.org.ru
Описание
Эта роль выполняет следующие функции:
- Создание пользователя devops
- Генерация безопасного пароля длиной 30 символов
- Назначение пароля пользователю
- Добавление пользователя в sudoers с правами выполнения команд без пароля
- Настройка SSH доступа через публичный ключ
Требования
- Ansible >= 2.9
- Python >= 3.6
- Права root/sudo для выполнения задач
Переменные
Основные переменные (defaults/main.yml)
# Настройки пользователя 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
# SSH ключи для пользователя devops
devops_ssh_keys:
  public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@example.com"
Использование
Базовое использование
- hosts: all
  become: true
  roles:
    - devops
С передачей SSH ключа
- hosts: all
  become: true
  vars:
    devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}"
  roles:
    - devops
С кастомными настройками
- 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 ключом
ansible-playbook -i inventory/hosts.ini playbook.yml \
  --ask-vault-pass \
  -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
Проверка создания пользователя
ansible all -i inventory/hosts.ini -m shell -a "id devops"
Troubleshooting
Проблема с sudoers
Если возникают проблемы с sudoers, проверьте синтаксис:
sudo visudo -c
Проблема с SSH
Проверьте права доступа к SSH директории:
ls -la /home/devops/.ssh/
Должны быть права 700 для директории и 600 для authorized_keys.
Лицензия
MIT