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

- Создана роль 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:
Сергей Антропов
2025-10-25 20:06:08 +03:00
parent 5093d38c06
commit 30b69ce0ec
20 changed files with 997 additions and 132 deletions

View 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 доступом"