feat: добавлена роль devops и оптимизирована структура проекта
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
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
- Создана роль devops с функциями: * Создание пользователя devops * Генерация безопасного пароля (30 символов) * Настройка SSH доступа по ключу * Добавление в sudoers без пароля * Полная документация и тесты - Оптимизирована структура проекта: * Удален Dockerfile из корня (сборка из dockerfiles/ansible-controller) * Заменены внешние образы на локальные ansible-controller * Обновлен Makefile для использования локальных образов * Зашифрован vault/secrets.yml с помощью ansible-vault - Добавлена документация: * Руководство по работе с vault (docs/vault-guide.md) * Подробная документация роли devops * Примеры использования и тесты - Улучшена безопасность: * Все секреты зашифрованы * Обновлен .gitignore для vault файлов * Добавлены инструкции по безопасности
This commit is contained in:
@@ -6,4 +6,5 @@
|
||||
- name: Развертывание всех ролей
|
||||
hosts: all
|
||||
roles:
|
||||
- ping
|
||||
# - ping
|
||||
- devops
|
||||
|
||||
120
roles/devops/QUICKSTART.md
Normal file
120
roles/devops/QUICKSTART.md
Normal file
@@ -0,0 +1,120 @@
|
||||
# Быстрый старт - Роль devops
|
||||
|
||||
## Автор
|
||||
Сергей Антропов
|
||||
Сайт: https://devops.org.ru
|
||||
|
||||
## Что делает роль
|
||||
|
||||
Роль `devops` автоматически:
|
||||
1. ✅ Создает пользователя `devops`
|
||||
2. ✅ Генерирует безопасный пароль (30 символов)
|
||||
3. ✅ Настраивает SSH доступ по ключу
|
||||
4. ✅ Добавляет права sudo без пароля
|
||||
5. ✅ Создает домашнюю директорию
|
||||
|
||||
## Быстрый запуск
|
||||
|
||||
### 1. Базовое использование
|
||||
```bash
|
||||
ansible-playbook -i inventory/hosts.ini roles/deploy.yml
|
||||
```
|
||||
|
||||
### 2. С SSH ключом из vault
|
||||
```bash
|
||||
ansible-playbook -i inventory/hosts.ini roles/deploy.yml \
|
||||
--ask-vault-pass \
|
||||
-e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
|
||||
```
|
||||
|
||||
### 3. Только роль devops
|
||||
```bash
|
||||
ansible-playbook -i inventory/hosts.ini roles/devops/playbook.yml
|
||||
```
|
||||
|
||||
## Проверка результата
|
||||
|
||||
После выполнения проверьте:
|
||||
|
||||
```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. Добавьте ваш SSH ключ в `vault/secrets.yml`:
|
||||
```yaml
|
||||
devops_ssh_keys:
|
||||
public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... your@email.com"
|
||||
```
|
||||
|
||||
2. Запустите playbook с передачей ключа:
|
||||
```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"]
|
||||
```
|
||||
|
||||
## Безопасность
|
||||
|
||||
- 🔒 Пароль генерируется автоматически и не сохраняется в логах
|
||||
- 🔑 SSH доступ только по ключу (если настроен)
|
||||
- 🛡️ Пользователь добавлен в sudoers с правами NOPASSWD
|
||||
- 📁 SSH директория имеет правильные права доступа (700)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Проблема: Пользователь не создан
|
||||
```bash
|
||||
# Проверьте права sudo
|
||||
ansible all -i inventory/hosts.ini -m shell -a "sudo whoami"
|
||||
```
|
||||
|
||||
### Проблема: SSH не работает
|
||||
```bash
|
||||
# Проверьте права на SSH директорию
|
||||
ansible all -i inventory/hosts.ini -m shell -a "ls -la /home/devops/.ssh/"
|
||||
```
|
||||
|
||||
### Проблема: Sudo не работает
|
||||
```bash
|
||||
# Проверьте sudoers файл
|
||||
ansible all -i inventory/hosts.ini -m shell -a "sudo visudo -c"
|
||||
```
|
||||
|
||||
## Поддержка
|
||||
|
||||
- 📧 Email: через сайт https://devops.org.ru
|
||||
- 📖 Документация: `roles/devops/README.md`
|
||||
- 🧪 Тесты: `roles/devops/tests/test.yml`
|
||||
167
roles/devops/README.md
Normal file
167
roles/devops/README.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# Роль 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)
|
||||
|
||||
```yaml
|
||||
# Настройки пользователя 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
|
||||
|
||||
```yaml
|
||||
# SSH ключи для пользователя devops
|
||||
devops_ssh_keys:
|
||||
public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7vbqajDhA... devops@example.com"
|
||||
```
|
||||
|
||||
## Использование
|
||||
|
||||
### Базовое использование
|
||||
|
||||
```yaml
|
||||
- hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- devops
|
||||
```
|
||||
|
||||
### С передачей SSH ключа
|
||||
|
||||
```yaml
|
||||
- hosts: all
|
||||
become: true
|
||||
vars:
|
||||
devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}"
|
||||
roles:
|
||||
- devops
|
||||
```
|
||||
|
||||
### С кастомными настройками
|
||||
|
||||
```yaml
|
||||
- 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)
|
||||
|
||||
## Теги
|
||||
|
||||
- `devops` - основная функциональность
|
||||
- `user-management` - управление пользователями
|
||||
- `security` - настройки безопасности
|
||||
- `ssh` - SSH конфигурация
|
||||
- `sudo` - настройки sudo
|
||||
|
||||
## Примеры
|
||||
|
||||
### Создание пользователя с SSH ключом
|
||||
|
||||
```bash
|
||||
ansible-playbook -i inventory/hosts.ini playbook.yml \
|
||||
--ask-vault-pass \
|
||||
-e "devops_ssh_public_key={{ devops_ssh_keys.public_key }}"
|
||||
```
|
||||
|
||||
### Проверка создания пользователя
|
||||
|
||||
```bash
|
||||
ansible all -i inventory/hosts.ini -m shell -a "id devops"
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Проблема с sudoers
|
||||
|
||||
Если возникают проблемы с sudoers, проверьте синтаксис:
|
||||
|
||||
```bash
|
||||
sudo visudo -c
|
||||
```
|
||||
|
||||
### Проблема с SSH
|
||||
|
||||
Проверьте права доступа к SSH директории:
|
||||
|
||||
```bash
|
||||
ls -la /home/devops/.ssh/
|
||||
```
|
||||
|
||||
Должны быть права 700 для директории и 600 для authorized_keys.
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT
|
||||
34
roles/devops/defaults/main.yml
Normal file
34
roles/devops/defaults/main.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
# Переменные по умолчанию для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Настройки пользователя 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"
|
||||
64
roles/devops/examples.yml
Normal file
64
roles/devops/examples.yml
Normal file
@@ -0,0 +1,64 @@
|
||||
---
|
||||
# Примеры использования роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Пример 1: Базовое использование
|
||||
- name: "Базовое создание пользователя devops"
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- devops
|
||||
|
||||
# Пример 2: С передачей SSH ключа из vault
|
||||
- name: "Создание пользователя devops с SSH ключом"
|
||||
hosts: all
|
||||
become: true
|
||||
vars:
|
||||
devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}"
|
||||
roles:
|
||||
- devops
|
||||
|
||||
# Пример 3: С кастомными настройками
|
||||
- name: "Создание пользователя с кастомными настройками"
|
||||
hosts: all
|
||||
become: true
|
||||
vars:
|
||||
devops_user:
|
||||
name: "mydevops"
|
||||
home: "/home/mydevops"
|
||||
groups: ["sudo", "docker", "wheel"]
|
||||
devops_password:
|
||||
length: 40
|
||||
min_special: 6
|
||||
min_upper: 6
|
||||
min_lower: 6
|
||||
min_digits: 6
|
||||
devops_ssh:
|
||||
ssh_dir: "/home/mydevops/.ssh"
|
||||
authorized_keys_file: "/home/mydevops/.ssh/authorized_keys"
|
||||
roles:
|
||||
- devops
|
||||
|
||||
# Пример 4: С дополнительными группами
|
||||
- name: "Создание пользователя с дополнительными группами"
|
||||
hosts: all
|
||||
become: true
|
||||
vars:
|
||||
devops_user:
|
||||
groups: ["sudo", "docker", "wheel", "adm", "systemd-journal"]
|
||||
roles:
|
||||
- devops
|
||||
|
||||
# Пример 5: Только для определенных хостов
|
||||
- name: "Создание пользователя на серверах разработки"
|
||||
hosts: dev_servers
|
||||
become: true
|
||||
vars:
|
||||
devops_user:
|
||||
name: "developer"
|
||||
home: "/home/developer"
|
||||
devops_sudo:
|
||||
commands: "ALL, !/usr/bin/passwd root"
|
||||
roles:
|
||||
- devops
|
||||
25
roles/devops/handlers/main.yml
Normal file
25
roles/devops/handlers/main.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
# Обработчики для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Обработчик для перезапуска SSH сервиса после изменения authorized_keys
|
||||
- name: "Перезапуск SSH сервиса"
|
||||
service:
|
||||
name: ssh
|
||||
state: restarted
|
||||
become: true
|
||||
when: ansible_os_family != "RedHat"
|
||||
|
||||
- name: "Перезапуск SSH сервиса (RedHat/CentOS)"
|
||||
service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
become: true
|
||||
when: ansible_os_family == "RedHat"
|
||||
|
||||
# Обработчик для проверки sudo конфигурации
|
||||
- name: "Проверка sudo конфигурации"
|
||||
command: visudo -c
|
||||
become: true
|
||||
changed_when: false
|
||||
28
roles/devops/meta/main.yml
Normal file
28
roles/devops/meta/main.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
galaxy_info:
|
||||
author: Сергей Антропов
|
||||
description: Роль для создания пользователя devops с безопасным паролем и SSH доступом
|
||||
company: https://devops.org.ru
|
||||
license: MIT
|
||||
min_ansible_version: "2.9"
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- focal
|
||||
- jammy
|
||||
- name: Debian
|
||||
versions:
|
||||
- bullseye
|
||||
- bookworm
|
||||
- name: EL
|
||||
versions:
|
||||
- "8"
|
||||
- "9"
|
||||
galaxy_tags:
|
||||
- devops
|
||||
- usermanagement
|
||||
- security
|
||||
- ssh
|
||||
- sudo
|
||||
|
||||
dependencies: []
|
||||
50
roles/devops/playbook.yml
Normal file
50
roles/devops/playbook.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
---
|
||||
# Пример playbook для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
- name: "Создание пользователя devops с безопасным паролем и SSH доступом"
|
||||
hosts: all
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
vars:
|
||||
# Переменная для SSH ключа (должна быть передана из vault)
|
||||
devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}"
|
||||
|
||||
roles:
|
||||
- devops
|
||||
|
||||
post_tasks:
|
||||
- name: "Проверка создания пользователя devops"
|
||||
command: "id {{ devops_user.name }}"
|
||||
register: user_check
|
||||
failed_when: user_check.rc != 0
|
||||
changed_when: false
|
||||
|
||||
- name: "Проверка SSH директории"
|
||||
stat:
|
||||
path: "{{ devops_ssh.ssh_dir }}"
|
||||
register: ssh_dir_check
|
||||
|
||||
- name: "Проверка authorized_keys"
|
||||
stat:
|
||||
path: "{{ devops_ssh.authorized_keys_file }}"
|
||||
register: auth_keys_check
|
||||
when: devops_ssh_public_key is defined
|
||||
|
||||
- name: "Проверка sudo прав"
|
||||
command: "sudo -l -U {{ devops_user.name }}"
|
||||
register: sudo_check
|
||||
become: true
|
||||
changed_when: false
|
||||
|
||||
- name: "Вывод результатов проверки"
|
||||
debug:
|
||||
msg: |
|
||||
Пользователь {{ devops_user.name }} создан: {{ user_check.rc == 0 }}
|
||||
SSH директория создана: {{ ssh_dir_check.stat.exists }}
|
||||
{% if devops_ssh_public_key is defined %}
|
||||
authorized_keys создан: {{ auth_keys_check.stat.exists }}
|
||||
{% endif %}
|
||||
Sudo права настроены: {{ sudo_check.rc == 0 }}
|
||||
57
roles/devops/tasks/main.yml
Normal file
57
roles/devops/tasks/main.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
# Задачи для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Генерация безопасного пароля для пользователя devops
|
||||
- name: "Генерация безопасного пароля для пользователя devops"
|
||||
set_fact:
|
||||
devops_user_password: "{{ lookup('password', '/tmp/devops_password length=' + devops_password.length | string + ' chars=ascii_letters,digits,punctuation') }}"
|
||||
no_log: true
|
||||
|
||||
# Создание пользователя devops
|
||||
- name: "Создание пользователя devops"
|
||||
user:
|
||||
name: "{{ devops_user.name }}"
|
||||
home: "{{ devops_user.home }}"
|
||||
shell: "{{ devops_user.shell }}"
|
||||
groups: "{{ devops_user.groups }}"
|
||||
create_home: "{{ devops_user.create_home }}"
|
||||
state: "{{ devops_user.state }}"
|
||||
password: "{{ devops_user_password | password_hash('sha512') }}"
|
||||
become: true
|
||||
|
||||
# Создание SSH директории для пользователя devops
|
||||
- name: "Создание SSH директории для пользователя devops"
|
||||
file:
|
||||
path: "{{ devops_ssh.ssh_dir }}"
|
||||
state: directory
|
||||
owner: "{{ devops_user.name }}"
|
||||
group: "{{ devops_user.name }}"
|
||||
mode: "{{ devops_ssh.ssh_dir_mode }}"
|
||||
become: true
|
||||
|
||||
# Добавление SSH ключа в authorized_keys
|
||||
- name: "Добавление SSH ключа в authorized_keys"
|
||||
authorized_key:
|
||||
user: "{{ devops_user.name }}"
|
||||
key: "{{ devops_ssh_public_key }}"
|
||||
state: present
|
||||
manage_dir: false
|
||||
become: true
|
||||
when: devops_ssh_public_key is defined
|
||||
|
||||
# Настройка sudo для пользователя devops (без пароля)
|
||||
- name: "Настройка sudo для пользователя devops без пароля"
|
||||
lineinfile:
|
||||
path: /etc/sudoers.d/devops
|
||||
line: "{{ devops_user.name }} ALL=(ALL) NOPASSWD: {{ devops_sudo.commands }}"
|
||||
create: true
|
||||
mode: '0440'
|
||||
validate: 'visudo -cf %s'
|
||||
become: true
|
||||
|
||||
# Логирование успешного создания пользователя
|
||||
- name: "Логирование создания пользователя devops"
|
||||
debug:
|
||||
msg: "Пользователь {{ devops_user.name }} успешно создан с безопасным паролем и SSH доступом"
|
||||
88
roles/devops/tests/test.yml
Normal file
88
roles/devops/tests/test.yml
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
# Тесты для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
- name: "Тестирование роли devops"
|
||||
hosts: all
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
vars:
|
||||
devops_ssh_public_key: "{{ devops_ssh_keys.public_key }}"
|
||||
|
||||
roles:
|
||||
- devops
|
||||
|
||||
post_tasks:
|
||||
# Тест 1: Проверка существования пользователя
|
||||
- name: "Проверка существования пользователя devops"
|
||||
command: "id {{ devops_user.name }}"
|
||||
register: user_exists
|
||||
failed_when: user_exists.rc != 0
|
||||
changed_when: false
|
||||
|
||||
# Тест 2: Проверка домашней директории
|
||||
- name: "Проверка домашней директории"
|
||||
stat:
|
||||
path: "{{ devops_user.home }}"
|
||||
register: home_dir
|
||||
failed_when: not home_dir.stat.exists
|
||||
|
||||
# Тест 3: Проверка SSH директории
|
||||
- name: "Проверка SSH директории"
|
||||
stat:
|
||||
path: "{{ devops_ssh.ssh_dir }}"
|
||||
register: ssh_dir
|
||||
failed_when: not ssh_dir.stat.exists
|
||||
|
||||
# Тест 4: Проверка authorized_keys (если SSH ключ передан)
|
||||
- name: "Проверка authorized_keys"
|
||||
stat:
|
||||
path: "{{ devops_ssh.authorized_keys_file }}"
|
||||
register: auth_keys
|
||||
failed_when: devops_ssh_public_key is defined and not auth_keys.stat.exists
|
||||
when: devops_ssh_public_key is defined
|
||||
|
||||
# Тест 5: Проверка sudo прав
|
||||
- name: "Проверка sudo прав"
|
||||
command: "sudo -l -U {{ devops_user.name }}"
|
||||
register: sudo_rights
|
||||
become: true
|
||||
failed_when: sudo_rights.rc != 0
|
||||
changed_when: false
|
||||
|
||||
# Тест 6: Проверка групп пользователя
|
||||
- name: "Проверка групп пользователя"
|
||||
command: "groups {{ devops_user.name }}"
|
||||
register: user_groups
|
||||
failed_when: user_groups.rc != 0
|
||||
changed_when: false
|
||||
|
||||
# Тест 7: Проверка прав на SSH директорию
|
||||
- name: "Проверка прав на SSH директорию"
|
||||
stat:
|
||||
path: "{{ devops_ssh.ssh_dir }}"
|
||||
register: ssh_dir_perms
|
||||
failed_when: ssh_dir_perms.stat.mode != "0" + devops_ssh.ssh_dir_mode
|
||||
|
||||
# Тест 8: Проверка shell пользователя
|
||||
- name: "Проверка shell пользователя"
|
||||
command: "getent passwd {{ devops_user.name }}"
|
||||
register: user_shell
|
||||
failed_when: user_shell.rc != 0
|
||||
changed_when: false
|
||||
|
||||
# Вывод результатов тестов
|
||||
- name: "Результаты тестов"
|
||||
debug:
|
||||
msg: |
|
||||
✅ Пользователь {{ devops_user.name }} создан
|
||||
✅ Домашняя директория {{ devops_user.home }} создана
|
||||
✅ SSH директория {{ devops_ssh.ssh_dir }} создана
|
||||
{% if devops_ssh_public_key is defined %}
|
||||
✅ authorized_keys настроен
|
||||
{% endif %}
|
||||
✅ Sudo права настроены
|
||||
✅ Группы пользователя: {{ user_groups.stdout }}
|
||||
✅ Shell пользователя: {{ user_shell.stdout.split(':')[-1] }}
|
||||
25
roles/devops/vars/main.yml
Normal file
25
roles/devops/vars/main.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
# Переменные для роли devops
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Список пакетов, необходимых для роли
|
||||
devops_required_packages:
|
||||
- openssh-server
|
||||
- sudo
|
||||
- passwd
|
||||
|
||||
# Настройки безопасности для SSH
|
||||
devops_ssh_security:
|
||||
permit_root_login: "no"
|
||||
password_authentication: "yes"
|
||||
pubkey_authentication: "yes"
|
||||
authorized_keys_file: ".ssh/authorized_keys"
|
||||
|
||||
# Настройки sudo для безопасности
|
||||
devops_sudo_security:
|
||||
requiretty: false
|
||||
visiblepw: false
|
||||
always_set_home: true
|
||||
env_reset: true
|
||||
env_keep: "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
|
||||
Reference in New Issue
Block a user