Files
DevOpsLab/roles/devops
Сергей Антропов 8be79a21ee
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
docs: обновлены QUICKSTART файлы в roles/
- roles/ping/QUICKSTART.md - обновлены команды Makefile, добавлены новые возможности
- roles/devops/QUICKSTART.md - обновлены команды, добавлена версия 2.0.0
- Добавлены примеры проверки результатов в контейнерах
- Обновлены примеры использования с актуальными командами
- Добавлены разделы про теги и дополнительные возможности

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-26 01:27:42 +03:00
..

Роль 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)

# Настройки пользователя 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