--- # Тесты для роли 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('не определены') }}