--- # ============================================================================= # VERIFY - Проверка тестовых инстансов # ============================================================================= - hosts: localhost gather_facts: false vars: # Получаем preset из переменной окружения или используем default preset_name: "{{ lookup('env', 'MOLECULE_PRESET') | default('default') }}" preset_file: "/workspace/molecule/presets/{{ preset_name }}.yml" # Fallback значения если preset файл не найден docker_network: labnet hosts: - name: u1 family: debian groups: [test] tasks: # ============================================================================= # НАСТРОЙКА - Загрузка конфигурации # ============================================================================= - name: Configuration setup debug: msg: | ================================================================================ НАСТРОЙКА - Загрузка конфигурации ================================================================================ Preset: {{ preset_name }} ================================================================================ - name: Load preset configuration include_vars: "{{ preset_file }}" when: preset_file is file ignore_errors: true # ============================================================================= # ПРОВЕРКА SYSTEMD УЗЛОВ - Статус systemd контейнеров # ============================================================================= - name: Systemd nodes verification debug: msg: | ================================================================================ ПРОВЕРКА SYSTEMD УЗЛОВ - Статус systemd контейнеров ================================================================================ Count: {{ hosts | selectattr('type','undefined') | list | length }} ================================================================================ - name: Check systemd nodes status community.docker.docker_container_exec: container: "{{ item.name }}" command: systemctl is-system-running loop: "{{ hosts | selectattr('type','undefined') | list }}" loop_control: { label: "{{ item.name }}" } register: systemd_status ignore_errors: true - name: Display systemd nodes status debug: msg: "Systemd node {{ item.0.name }}: {{ item.1.stdout | default('unknown') }}" loop: "{{ systemd_status.results | default([]) }}" when: systemd_status is defined # Проверка DinD узлов - name: Check DinD nodes docker daemon community.docker.docker_container_exec: container: "{{ item.name }}" command: docker version --format '{{.Server.Version}}' loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list }}" loop_control: { label: "{{ item.name }}" } register: dind_status ignore_errors: true - name: Display DinD nodes status debug: msg: "DinD node {{ item.0.name }}: Docker {{ item.1.stdout | default('not running') }}" loop: "{{ dind_status.results | default([]) }}" when: dind_status is defined # Проверка DOoD узлов - name: Check DOoD nodes docker access community.docker.docker_container_exec: container: "{{ item.name }}" command: docker ps --format '{{.Names}}' loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list }}" loop_control: { label: "{{ item.name }}" } register: dood_status ignore_errors: true - name: Display DOoD nodes status debug: msg: "DOoD node {{ item.0.name }}: Can access {{ item.1.stdout_lines | length | default(0) }} containers" loop: "{{ dood_status.results | default([]) }}" when: dood_status is defined # Проверка сетевого подключения - name: Test network connectivity between nodes community.docker.docker_container_exec: container: "{{ item.0.name }}" command: ping -c 1 {{ item.1.name }} loop: "{{ hosts | subelements(hosts, 'name') }}" loop_control: { label: "{{ item.0.name }} -> {{ item.1.name }}" } when: item.0.name != item.1.name register: ping_results ignore_errors: true - name: Display network connectivity results debug: msg: "Network test {{ item.0.name }} -> {{ item.1.name }}: {{ 'OK' if item.2.rc == 0 else 'FAILED' }}" loop: "{{ ping_results.results | default([]) }}" when: ping_results is defined # Проверка портов - name: Check published ports community.docker.docker_container_exec: container: "{{ item.name }}" command: netstat -tlnp loop: "{{ hosts | selectattr('publish','defined') | list }}" loop_control: { label: "{{ item.name }}" } register: port_status ignore_errors: true - name: Display port status debug: msg: "Node {{ item.0.name }} ports: {{ item.1.stdout_lines | select('match', 'LISTEN') | list | length }} listening" loop: "{{ port_status.results | default([]) }}" when: port_status is defined # Проверка групп - name: Display inventory groups debug: msg: | 📋 Inventory Groups: {% for group, members in (groups_map | default({}) | dictsort) %} - {{ group }}: {{ members | join(', ') }} {% endfor %} # Финальная сводка - name: Display verification summary debug: msg: | ✅ Verification Summary: - Total hosts: {{ hosts | length }} - Systemd nodes: {{ hosts | selectattr('type','undefined') | list | length }} - DinD nodes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list | length }} - DOoD nodes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dood') | list | length }} - Groups: {{ groups_map.keys() | list | join(', ') }} - Network: {{ docker_network }}