--- # ============================================================================= # DESTROY - Удаление тестовых инстансов # ============================================================================= - hosts: localhost gather_facts: false vars: # Получаем preset из переменной окружения или используем default preset_name: "{{ lookup('env', 'MOLECULE_PRESET') | default('default') }}" # Проверяем сначала в папке k8s, затем в основной папке presets preset_file: "{{ '/workspace/molecule/presets/k8s/' + preset_name + '.yml' if (preset_name in ['k8s-minimal', 'kubernetes', 'k8s-full'] or preset_name.startswith('k8s-')) else '/workspace/molecule/presets/' + preset_name + '.yml' }}" # Fallback значения если preset файл не найден docker_network: labnet hosts: - name: u1 family: debian groups: [test] kind_clusters: [] tasks: - name: Display filtered hosts debug: msg: | ================================================================================ НАЧАЛО РАБОТЫ ФАЙЛА DESTROY.YML ================================================================================ # ============================================================================= # НАСТРОЙКА - Загрузка конфигурации # ============================================================================= - name: Configuration setup debug: msg: | ================================================================================ НАСТРОЙКА - Загрузка конфигурации ================================================================================ Preset: {{ preset_name }} ================================================================================ - name: Load preset configuration include_vars: "{{ preset_file }}" when: preset_file is file ignore_errors: true # ============================================================================= # УДАЛЕНИЕ КОНТЕЙНЕРОВ - Остановка и удаление контейнеров # ============================================================================= - name: Container removal debug: msg: | ================================================================================ УДАЛЕНИЕ КОНТЕЙНЕРОВ - Остановка и удаление контейнеров ================================================================================ Count: {{ hosts | length }} containers ================================================================================ - name: Stop and remove containers (Podman) containers.podman.podman_container: name: "{{ item.name }}" state: absent force_delete: true loop: "{{ hosts }}" loop_control: { label: "{{ item.name }}" } ignore_errors: true - name: Force remove any remaining containers shell: | podman ps -a --filter "name={{ item.name }}" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r podman rm -f 2>/dev/null || true loop: "{{ hosts }}" loop_control: { label: "{{ item.name }}" } ignore_errors: true - name: Remove network containers.podman.podman_network: name: "{{ podman_network | default(docker_network) }}" state: absent ignore_errors: true - name: Force cleanup all project containers shell: | {% for host in hosts %} podman ps -a --filter "name={{ host.name }}" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r podman rm -f 2>/dev/null || true {% endfor %} podman ps -a --filter "ancestor=inecs/ansible-lab" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r podman rm -f 2>/dev/null || true podman ps -a --filter "network=labnet" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r podman rm -f 2>/dev/null || true ignore_errors: true vars: hosts: "{{ hosts }}" - name: Display cleanup summary debug: msg: | ================================================================================ СТАТИСТИКА ОЧИСТКИ ================================================================================ Containers: {{ hosts | length }} Volumes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list | length }} Network: {{ podman_network | default(docker_network) }} Clusters: {{ minikube_profiles | default([]) | length }} ================================================================================ - name: Display filtered hosts debug: msg: | ================================================================================ РАБОТА ФАЙЛА DESTROY.YML ЗАВЕРШЕНА ================================================================================