- Обновлен README.md с новыми возможностями COD preset и роли devops - Добавлена документация по COD preset (docs/cod-preset.md) - Добавлена документация по роли devops (docs/devops-role.md) - Обновлена документация по ARM64 поддержке (docs/arm64-support.md) - Обновлены примеры использования (docs/examples.md) - Исправлен Dockerfile для RHEL с Python 3.11 из EPEL - Обновлен COD preset с 6 контейнерами (Ubuntu + Debian + Alt + Astra + CentOS + RHEL) - Улучшена роль devops с поддержкой российских ОС - Добавлен CHANGELOG.md с историей изменений - Все изменения протестированы на ARM64 архитектуре
9.1 KiB
9.1 KiB
Роль devops - Универсальная настройка пользователей и SSH
Автор: Сергей Антропов
Сайт: https://devops.org.ru
Версия: 3.0.0
📋 Описание
Роль devops - это универсальная Ansible роль для настройки пользователей и SSH ключей на всех поддерживаемых операционных системах. Роль автоматически определяет тип ОС и применяет соответствующие конфигурации.
🎯 Возможности
- Создание пользователя
devopsс настройкой пароля - Установка SSH публичного ключа для безопасного доступа
- Настройка sudo прав с гибкой конфигурацией
- Автоматическое определение ОС и применение соответствующих настроек
- Поддержка российских ОС (Alt Linux, Astra Linux, RedOS)
- Универсальность - одна роль работает на всех платформах
🖥️ Поддерживаемые ОС
Зарубежные ОС
- 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
Российские ОС
- Alt Linux 9, 10
- Astra Linux 1.7 (совместимый образ)
- RedOS 9 (совместимый образ)
🚀 Использование
Базовое использование
---
- name: Настройка пользователя devops
hosts: all
become: true
roles:
- devops
vars:
devops_user: "devops"
devops_password: "{{ vault_devops_password }}"
devops_ssh_public_key: "{{ vault_devops_ssh_public_key }}"
С кастомными настройками
---
- name: Настройка пользователя devops
hosts: all
become: true
roles:
- devops
vars:
devops_user: "admin"
devops_password: "{{ vault_admin_password }}"
devops_ssh_public_key: "{{ vault_admin_ssh_key }}"
devops_additional_groups: ["sudo", "docker", "wheel"]
devops_sudo_nopasswd: true
⚙️ Переменные
Основные переменные
| Переменная | Описание | По умолчанию |
|---|---|---|
devops_user |
Имя пользователя | devops |
devops_password |
Пароль пользователя | "" |
devops_ssh_public_key |
SSH публичный ключ | "" |
devops_additional_groups |
Дополнительные группы | ["sudo"] |
devops_sudo_nopasswd |
Sudo без пароля | false |
devops_shell |
Оболочка пользователя | /bin/bash |
Vault переменные
| Переменная | Описание | Пример |
|---|---|---|
vault_devops_password |
Пароль из vault | "secure_password" |
vault_devops_ssh_public_key |
SSH ключ из vault | "ssh-rsa AAAAB3..." |
🔧 Конфигурация по ОС
Автоматическое определение
Роль автоматически определяет ОС и применяет соответствующие настройки:
# Для Debian/Ubuntu
devops_debian_config:
package_manager: "apt"
sudo_group: "sudo"
additional_groups: ["sudo", "docker", "systemd-journal"]
# Для RHEL/CentOS
devops_rhel_config:
package_manager: "yum"
sudo_group: "wheel"
additional_groups: ["wheel", "docker", "systemd-journal"]
# Для российских ОС
devops_russian_os_config:
clearlinux: # Astra Linux
package_manager: "apt"
sudo_group: "sudo"
altlinux: # Alt Linux
package_manager: "apt"
sudo_group: "sudo"
📊 Примеры использования
Тестирование с COD preset
# Тестирование на всех ОС
make role test cod
# Проверка результатов
docker exec -it ubuntu1 id devops
docker exec -it alt1 id devops
docker exec -it astra1 id devops
Использование в других ролях
---
- name: Настройка инфраструктуры
hosts: all
become: true
roles:
- devops # Сначала настраиваем пользователя
- docker # Затем устанавливаем Docker
- monitoring # И мониторинг
Создание пользователей для разных целей
---
- name: Настройка пользователей
hosts: all
become: true
tasks:
- name: Создание пользователя devops
include_role:
name: devops
vars:
devops_user: "devops"
devops_password: "{{ vault_devops_password }}"
devops_ssh_public_key: "{{ vault_devops_ssh_key }}"
- name: Создание пользователя admin
include_role:
name: devops
vars:
devops_user: "admin"
devops_password: "{{ vault_admin_password }}"
devops_ssh_public_key: "{{ vault_admin_ssh_key }}"
devops_additional_groups: ["sudo", "docker", "wheel"]
🔐 Безопасность
SSH ключи
# В vault/secrets.yml
vault_devops_ssh_public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC..."
vault_devops_password: "secure_password_123"
Sudo права
# Базовые sudo права
devops_sudo_nopasswd: false
# Расширенные права
devops_additional_groups: ["sudo", "docker", "wheel", "systemd-journal"]
🐛 Диагностика
Проверка пользователя
# Проверка существования пользователя
id devops
# Проверка групп
groups devops
# Проверка sudo прав
sudo -l -U devops
Проверка SSH
# Проверка SSH ключей
cat /home/devops/.ssh/authorized_keys
# Проверка прав доступа
ls -la /home/devops/.ssh/
Проверка конфигурации
# Проверка sudo конфигурации
cat /etc/sudoers.d/devops
# Проверка SSH конфигурации
grep -i "permitrootlogin" /etc/ssh/sshd_config
📚 Шаблоны
SSH конфигурация
# templates/devops_ssh_config.j2
# SSH конфигурация для пользователя {{ devops_user }}
Match User {{ devops_user }}
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Sudo конфигурация
# templates/devops_sudoers.j2
# Sudo права для пользователя {{ devops_user }}
{{ devops_user }} ALL=(ALL) {% if devops_sudo_nopasswd %}NOPASSWD:{% endif %}ALL
🔄 Обновление
Обновление роли
# Проверка синтаксиса
make role lint devops
# Тестирование
make role test cod
# Развертывание
make role deploy
Обновление переменных
# Редактирование vault
make vault edit
# Имя файла: secrets
# Проверка vault
make vault check
📈 Лучшие практики
1. Используйте Vault для секретов
# Хорошо
devops_password: "{{ vault_devops_password }}"
# Плохо
devops_password: "hardcoded_password"
2. Настраивайте группы по необходимости
# Для Docker хостов
devops_additional_groups: ["sudo", "docker"]
# Для мониторинга
devops_additional_groups: ["sudo", "systemd-journal"]
3. Используйте условную логику
# В вашем playbook
- name: Настройка devops пользователя
include_role:
name: devops
when: ansible_os_family in ['Debian', 'RedHat', 'Altlinux', 'Clearlinux']
🎉 Заключение
Роль devops обеспечивает:
- Универсальность - работает на всех поддерживаемых ОС
- Автоматизацию - минимальные настройки для максимального результата
- Безопасность - правильная настройка SSH и sudo
- Гибкость - настройка под любые требования
- Надежность - проверенная конфигурация для всех платформ
Используйте роль devops для:
- Настройки базовых пользователей
- Установки SSH ключей
- Конфигурации sudo прав
- Подготовки инфраструктуры
- Тестирования на разных ОС
Автор: Сергей Антропов
Сайт: https://devops.org.ru