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
				
			- Обновлена версия в README.md - Обновлена версия во всех файлах docs/ - Обновлена версия в dockerfiles/README.md - Обновлена версия в roles/*/QUICKSTART.md - Подготовка к версии 3.0.0 с Kubernetes поддержкой Автор: Сергей Антропов Сайт: https://devops.org.ru
		
			
				
	
	
		
			228 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Быстрый старт - Роль 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)
 | ||
| 
 | ||
| ## Быстрый запуск
 | ||
| 
 | ||
| ### Тестирование роли
 | ||
| 
 | ||
| ```bash
 | ||
| # Lint проверка
 | ||
| make role lint devops
 | ||
| 
 | ||
| # Тестирование с minimal preset
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Тестирование конкретной роли
 | ||
| make role test devops
 | ||
| ```
 | ||
| 
 | ||
| ### Базовое использование
 | ||
| 
 | ||
| ```bash
 | ||
| # Запуск всех ролей через roles/deploy.yml
 | ||
| make role test minimal
 | ||
| 
 | ||
| # Запуск только роли devops
 | ||
| ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml
 | ||
| ```
 | ||
| 
 | ||
| ### С SSH ключом из vault
 | ||
| 
 | ||
| ```bash
 | ||
| # Создание 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 }}"
 | ||
| ```
 | ||
| 
 | ||
| ## Проверка результата
 | ||
| 
 | ||
| ### В тестовых контейнерах
 | ||
| 
 | ||
| ```bash
 | ||
| # Просмотр логов
 | ||
| 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/
 | ||
| ```
 | ||
| 
 | ||
| ### В продакшн окружении
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверка пользователя
 | ||
| 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`:
 | ||
| 
 | ||
| ```bash
 | ||
| # Редактирование vault
 | ||
| make vault edit
 | ||
| # Имя файла: secrets
 | ||
| ```
 | ||
| 
 | ||
| Добавьте SSH ключ:
 | ||
| 
 | ||
| ```yaml
 | ||
| devops_ssh_keys:
 | ||
|   public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... your@email.com"
 | ||
| ```
 | ||
| 
 | ||
| ### 2. Запуск с SSH ключом
 | ||
| 
 | ||
| ```bash
 | ||
| ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
 | ||
|   --ask-vault-pass \
 | ||
|   -e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
 | ||
| ```
 | ||
| 
 | ||
| ## Кастомизация
 | ||
| 
 | ||
| ### Изменить имя пользователя
 | ||
| 
 | ||
| ```yaml
 | ||
| vars:
 | ||
|   devops_user:
 | ||
|     name: "myuser"
 | ||
|     home: "/home/myuser"
 | ||
| ```
 | ||
| 
 | ||
| ### Изменить длину пароля
 | ||
| 
 | ||
| ```yaml
 | ||
| vars:
 | ||
|   devops_password:
 | ||
|     length: 40
 | ||
| ```
 | ||
| 
 | ||
| ### Добавить группы
 | ||
| 
 | ||
| ```yaml
 | ||
| vars:
 | ||
|   devops_user:
 | ||
|     groups: ["sudo", "docker", "wheel", "adm"]
 | ||
| ```
 | ||
| 
 | ||
| ### Использование в playbook
 | ||
| 
 | ||
| ```yaml
 | ||
| - 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
 | ||
| 
 | ||
| ### Проблема: Пользователь не создан
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверьте права sudo
 | ||
| docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo whoami
 | ||
| ```
 | ||
| 
 | ||
| ### Проблема: SSH не работает
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверьте права на SSH директорию
 | ||
| docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) ls -la /home/devops/.ssh/
 | ||
| ```
 | ||
| 
 | ||
| ### Проблема: Sudo не работает
 | ||
| 
 | ||
| ```bash
 | ||
| # Проверьте sudoers файл
 | ||
| docker exec -it $(docker ps -aq --filter "network=labnet" | head -1) sudo visudo -c
 | ||
| ```
 | ||
| 
 | ||
| ## Теги
 | ||
| 
 | ||
| Роль поддерживает следующие теги:
 | ||
| 
 | ||
| - `devops` - основная функциональность
 | ||
| - `user-management` - управление пользователями
 | ||
| - `security` - настройки безопасности
 | ||
| - `ssh` - SSH конфигурация
 | ||
| - `sudo` - настройки sudo
 | ||
| 
 | ||
| Пример использования:
 | ||
| 
 | ||
| ```bash
 | ||
| # Только создание пользователя
 | ||
| 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
 |