Files
DevOpsLab/roles/devops/QUICKSTART.md
Сергей Антропов c1655d2674
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
chore: обновлена версия проекта с 2.0.0 на 3.0.0
- Обновлена версия в README.md
- Обновлена версия во всех файлах docs/
- Обновлена версия в dockerfiles/README.md
- Обновлена версия в roles/*/QUICKSTART.md
- Подготовка к версии 3.0.0 с Kubernetes поддержкой

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

5.8 KiB
Raw Blame History

Быстрый старт - Роль devops

Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0

Что делает роль

Роль автоматически:

  1. Создает пользователя devops
  2. Генерирует безопасный пароль (30 символов)
  3. Настраивает SSH доступ по ключу
  4. Добавляет права sudo без пароля
  5. Создает домашнюю директорию
  6. Автоматически определяет ОС и настраивает группы
  7. Поддерживает все ОС (Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS)

Быстрый запуск

Тестирование роли

# Lint проверка
make role lint devops

# Тестирование с minimal preset
make role test minimal

# Тестирование конкретной роли
make role test devops

Базовое использование

# Запуск всех ролей через roles/deploy.yml
make role test minimal

# Запуск только роли devops
ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml

С SSH ключом из vault

# Создание vault
make vault init

# Добавление SSH ключа в vault/secrets.yml
# Затем запуск с vault паролем
ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
  --ask-vault-pass \
  -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"

Проверка результата

В тестовых контейнерах

# Просмотр логов
docker logs $(docker ps -aq --filter "network=labnet" | head -1)

# Вход в контейнер
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) bash

# Проверка пользователя
id devops
sudo -l -U devops
ls -la /home/devops/.ssh/

В продакшн окружении

# Проверка пользователя
ansible all -i inventory/hosts.ini -m shell -a "id devops"

# Проверка sudo прав
ansible all -i inventory/hosts.ini -m shell -a "sudo -l -U devops"

# Проверка SSH директории
ansible all -i inventory/hosts.ini -m shell -a "ls -la /home/devops/.ssh/"

Настройка SSH ключа

1. Добавление ключа в vault

Создайте/отредактируйте vault/secrets.yml:

# Редактирование vault
make vault edit
# Имя файла: secrets

Добавьте SSH ключ:

devops_ssh_keys:
  public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... your@email.com"

2. Запуск с SSH ключом

ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
  --ask-vault-pass \
  -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"

Кастомизация

Изменить имя пользователя

vars:
  devops_user:
    name: "myuser"
    home: "/home/myuser"

Изменить длину пароля

vars:
  devops_password:
    length: 40

Добавить группы

vars:
  devops_user:
    groups: ["sudo", "docker", "wheel", "adm"]

Использование в playbook

- hosts: all
  become: true
  vars:
    devops_user:
      name: "admin"
      groups: ["sudo", "docker"]
    devops_password:
      length: 40
  roles:
    - devops

Безопасность

  • 🔒 Пароль генерируется автоматически и не сохраняется в логах
  • 🔑 SSH доступ только по ключу (если настроен)
  • 🛡️ Пользователь добавлен в sudoers с правами NOPASSWD
  • 📁 SSH директория имеет правильные права доступа (700)
  • 🔐 Пароль содержит минимум 4 символа каждого типа

Поддерживаемые ОС

  • Ubuntu 20.04, 22.04, 24.04
  • Debian 9, 10, 11, 12
  • CentOS 7, 8, 9
  • RHEL 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Astra Linux 1.7
  • ALT Linux P9
  • RED OS 9

Troubleshooting

Проблема: Пользователь не создан

# Проверьте права sudo
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo whoami

Проблема: SSH не работает

# Проверьте права на SSH директорию
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) ls -la /home/devops/.ssh/

Проблема: Sudo не работает

# Проверьте sudoers файл
docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo visudo -c

Теги

Роль поддерживает следующие теги:

  • devops - основная функциональность
  • user-management - управление пользователями
  • security - настройки безопасности
  • ssh - SSH конфигурация
  • sudo - настройки sudo

Пример использования:

# Только создание пользователя
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags devops

# Только SSH настройка
ansible-playbook -i inventory/hosts.ini roles/deploy.yml --tags ssh

Дополнительная информация

  • 📖 Полная документация: roles/devops/README.md
  • 🧪 Тесты: roles/devops/tests/test.yml
  • 📝 Примеры: roles/devops/examples.yml

Автор: Сергей Антропов
Сайт: https://devops.org.ru