feat: Переименование geop в cod и добавление ARM64 поддержки
- Переименован пресет geop.yml в cod.yml - Обновлены все группы с geop на cod - Добавлена поддержка ARM64 для Astra Linux и RedOS - Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов - Улучшены разделители в логах Molecule - Зашифрован файл vault/secrets.yml - Обновлена роль devops с поддержкой vault - Добавлены шаблоны для SSH и sudoers конфигураций
This commit is contained in:
@@ -3,23 +3,159 @@
|
||||
# Автор: Сергей Антропов
|
||||
# Сайт: https://devops.org.ru
|
||||
|
||||
# Обработчик для перезапуска SSH сервиса после изменения authorized_keys
|
||||
- name: "Перезапуск SSH сервиса"
|
||||
service:
|
||||
name: ssh
|
||||
state: restarted
|
||||
become: true
|
||||
when: ansible_os_family != "RedHat"
|
||||
- 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 сервиса (RedHat/CentOS)"
|
||||
service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
become: true
|
||||
when: ansible_os_family == "RedHat"
|
||||
- name: "Перезапуск SSH сервиса (service)"
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: restarted
|
||||
enabled: yes
|
||||
become: true
|
||||
loop: "{{ devops_services_to_enable }}"
|
||||
when: ansible_service_mgr == "service"
|
||||
|
||||
# Обработчик для проверки sudo конфигурации
|
||||
- name: "Проверка sudo конфигурации"
|
||||
command: visudo -c
|
||||
become: true
|
||||
changed_when: false
|
||||
- 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('неизвестно') }}
|
||||
Reference in New Issue
Block a user