--- # Проверка работы systemd, docker и docker-compose в образах # Автор: Сергей Антропов # Сайт: https://devops.org.ru - name: Verify systemd, docker and docker-compose services hosts: all gather_facts: true tasks: - name: Display OS information debug: msg: "Тестирование на {{ ansible_distribution }} {{ ansible_distribution_version }}" - name: Check if systemd is available and running systemd: name: systemd state: started register: systemd_status failed_when: false - name: Display systemd status debug: msg: "Systemd статус: {{ 'Доступен и запущен' if systemd_status is succeeded else 'Недоступен или не запущен' }}" - name: Check systemd version command: systemd --version register: systemd_version failed_when: false changed_when: false - name: Display systemd version debug: msg: "Версия systemd: {{ systemd_version.stdout_lines[0] if systemd_version.stdout_lines else 'Не определена' }}" - name: Check if docker service exists stat: path: /usr/bin/docker register: docker_binary - name: Check if docker service exists (alternative path) stat: path: /usr/local/bin/docker register: docker_binary_alt - name: Display docker binary status debug: msg: "Docker binary: {{ 'Найден в /usr/bin/docker' if docker_binary.stat.exists else ('Найден в /usr/local/bin/docker' if docker_binary_alt.stat.exists else 'Не найден') }}" - name: Check docker version command: docker --version register: docker_version failed_when: false changed_when: false - name: Display docker version debug: msg: "Версия Docker: {{ docker_version.stdout if docker_version.stdout else 'Docker не установлен' }}" - name: Check if docker daemon is running command: docker info register: docker_info failed_when: false changed_when: false - name: Display docker daemon status debug: msg: "Docker daemon: {{ 'Запущен' if docker_info is succeeded else 'Не запущен или недоступен' }}" - name: Check if docker-compose binary exists stat: path: /usr/local/bin/docker-compose register: docker_compose_binary - name: Check if docker-compose binary exists (alternative path) stat: path: /usr/bin/docker-compose register: docker_compose_binary_alt - name: Check if docker compose plugin exists command: docker compose version register: docker_compose_plugin failed_when: false changed_when: false - name: Display docker-compose status debug: msg: "Docker Compose: {{ 'Найден как binary' if docker_compose_binary.stat.exists or docker_compose_binary_alt.stat.exists else ('Найден как plugin' if docker_compose_plugin is succeeded else 'Не найден') }}" - name: Display docker-compose version debug: msg: "Версия Docker Compose: {{ docker_compose_plugin.stdout if docker_compose_plugin is succeeded else 'Docker Compose не установлен' }}" - name: Test docker functionality command: docker run --rm hello-world register: docker_test failed_when: false changed_when: false - name: Display docker test result debug: msg: "Тест Docker: {{ 'Успешно' if docker_test is succeeded else 'Ошибка - ' + docker_test.stderr }}" - name: Check systemd services status command: systemctl list-units --type=service --state=running register: running_services failed_when: false changed_when: false - name: Display running services count debug: msg: "Количество запущенных сервисов: {{ running_services.stdout_lines | length }}" - name: Check for docker-related systemd services command: systemctl list-units --type=service | grep -i docker register: docker_services failed_when: false changed_when: false - name: Display docker services debug: msg: "Docker сервисы: {{ docker_services.stdout_lines if docker_services.stdout_lines else 'Не найдены' }}" - name: Final summary debug: msg: | ======================================== РЕЗУЛЬТАТЫ ПРОВЕРКИ ОБРАЗА {{ ansible_distribution }}: ======================================== Systemd: {{ '✓ Работает' if systemd_status is succeeded else '✗ Не работает' }} Docker: {{ '✓ Установлен и работает' if docker_info is succeeded else '✗ Не установлен или не работает' }} Docker Compose: {{ '✓ Доступен' if (docker_compose_binary.stat.exists or docker_compose_binary_alt.stat.exists or docker_compose_plugin is succeeded) else '✗ Недоступен' }} ========================================