--- # Обработчики для роли devops # Автор: Сергей Антропов # Сайт: https://devops.org.ru - name: "🔄 Перезапуск SSH сервиса" block: - name: "Перезапуск SSH сервиса (systemd)" listen: "restart ssh service" systemd: name: "{{ item }}" state: restarted enabled: yes daemon_reload: yes become: true loop: "{{ devops_services_to_enable }}" when: ansible_service_mgr == "systemd" - name: "Перезапуск SSH сервиса (service)" service: name: "{{ item }}" state: restarted enabled: yes become: true loop: "{{ devops_services_to_enable }}" when: ansible_service_mgr == "service" - name: "Перезапуск SSH сервиса (rc-service)" service: name: "{{ item }}" state: restarted enabled: yes become: true loop: "{{ devops_services_to_enable }}" when: ansible_service_mgr == "rc-service" - name: "🔍 Проверка конфигурации SSH" block: - name: "Проверка конфигурации SSH сервера" listen: "check ssh config" command: "sshd -t" become: true register: sshd_config_check changed_when: false failed_when: sshd_config_check.rc != 0 - name: "Логирование проверки SSH конфигурации" debug: msg: "SSH конфигурация проверена успешно" when: false - name: "📝 Логирование изменений" block: - name: "Запись в лог файл" listen: "log changes" lineinfile: path: "{{ devops_log_file }}" line: "{{ ansible_date_time.iso8601 }} - {{ ansible_hostname }} - {{ ansible_user_id }} - {{ ansible_play_name }} - {{ ansible_task_name }}" create: yes owner: root group: root mode: '0644' become: true when: devops_log_file is defined - name: "Логирование в syslog" syslogger: facility: "local0" priority: "info" msg: "DevOps role: {{ ansible_task_name }} completed on {{ ansible_hostname }}" when: false - name: "🔔 Уведомления о завершении" block: - name: "Уведомление об успешном завершении" listen: "notify completion" debug: msg: "✅ Роль devops успешно выполнена на {{ ansible_hostname }}" when: devops_notify_on_success - name: "Уведомление об ошибке" debug: msg: "❌ Ошибка при выполнении роли devops на {{ ansible_hostname }}" when: devops_notify_on_failure - name: "🧹 Очистка временных файлов" block: - name: "Удаление временных файлов" listen: "cleanup temp files" file: path: "{{ item }}" state: absent become: true loop: - "/tmp/devops_setup_*" - "/tmp/ansible_*" ignore_errors: true - name: "Логирование очистки" debug: msg: "Временные файлы очищены" when: false - name: "🔐 Проверка безопасности" block: - name: "Проверка прав доступа к файлам пользователя" listen: "security check" stat: path: "{{ devops_home }}" register: home_dir_check - name: "Проверка прав доступа к SSH директории" stat: path: "{{ devops_ssh_dir }}" register: ssh_dir_check - name: "Проверка прав доступа к authorized_keys" stat: path: "{{ devops_ssh_authorized_keys }}" register: ssh_keys_check - name: "Проверка прав доступа к sudoers файлу" stat: path: "{{ devops_sudoers_file }}" register: sudoers_file_check - name: "Логирование проверки безопасности" debug: msg: | Результаты проверки безопасности: - Домашняя директория: {{ home_dir_check.stat.exists }} - SSH директория: {{ ssh_dir_check.stat.exists }} - SSH ключи: {{ ssh_keys_check.stat.exists }} - Sudoers файл: {{ sudoers_file_check.stat.exists }} - name: "📊 Сбор статистики" block: - name: "Сбор информации о пользователе" listen: "collect statistics" command: "id {{ devops_user }}" register: user_info changed_when: false - name: "Сбор информации о группах пользователя" command: "groups {{ devops_user }}" register: user_groups changed_when: false - name: "Сбор информации о SSH ключах" command: "wc -l {{ devops_ssh_authorized_keys }}" register: ssh_keys_count changed_when: false ignore_errors: true - name: "Логирование статистики" debug: msg: | Статистика пользователя {{ devops_user }}: - Информация: {{ user_info.stdout }} - Группы: {{ user_groups.stdout }} - SSH ключей: {{ ssh_keys_count.stdout | default('неизвестно') }}