Files
DevOpsLab/roles/devops/tests/test.yml
Сергей Антропов 7232bd6756
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
feat: сделана роль devops универсальной для всех ОС
- Добавлена автоматическая детекция ОС и настройка групп пользователя
- Поддержка всех ОС из dockerfiles: Ubuntu, Debian, RHEL, CentOS, Rocky, AlmaLinux, Astra Linux, ALT Linux, RedOS
- Автоматический выбор групп: sudo для Ubuntu/Debian, wheel для RHEL-семейства
- Обновлена документация с примерами для разных ОС
- Добавлены тесты для проверки универсальности
- Исправлены ошибки линтера в meta/main.yml

Роль теперь работает на всех системах из dockerfiles без дополнительной настройки.
2025-10-25 20:24:43 +03:00

91 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Тесты для роли 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] }}
ОС: {{ devops_os_name | default('неизвестная') }}
✅ Группы для ОС: {{ devops_user_groups | default('не определены') }}