Some checks failed
Ansible Testing / lint (push) Has been cancelled
Ansible Testing / test (default) (push) Has been cancelled
Ansible Testing / test (minimal) (push) Has been cancelled
Ansible Testing / test (performance) (push) Has been cancelled
Ansible Testing / deploy-check (push) Has been cancelled
- Добавлено создание контейнеров из секции hosts в create_k8s_cluster.py - Добавлено удаление контейнеров в команде make k8s destroy - Создан скрипт scripts/delete_hosts.py для удаления контейнеров - Контейнеры автоматически создаются в Docker сети из пресета - Контейнеры удаляются вместе с Kind кластером при make k8s destroy
86 lines
3.5 KiB
YAML
86 lines
3.5 KiB
YAML
---
|
||
- 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: Load preset configuration
|
||
include_vars: "{{ preset_file }}"
|
||
when: preset_file is file
|
||
ignore_errors: true
|
||
|
||
- name: Stop and remove containers
|
||
community.docker.docker_container:
|
||
name: "{{ item.name }}"
|
||
state: absent
|
||
force_kill: true
|
||
cleanup: true
|
||
loop: "{{ hosts }}"
|
||
loop_control: { label: "{{ item.name }}" }
|
||
ignore_errors: true
|
||
|
||
- name: Force remove any remaining containers
|
||
shell: |
|
||
docker ps -a --filter "name={{ item.name }}" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r docker rm -f
|
||
loop: "{{ hosts }}"
|
||
loop_control: { label: "{{ item.name }}" }
|
||
ignore_errors: true
|
||
|
||
- name: Remove DinD volumes
|
||
community.docker.docker_volume:
|
||
name: "{{ item.name }}-docker"
|
||
state: absent
|
||
loop: "{{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list }}"
|
||
loop_control: { label: "{{ item.name }}" }
|
||
ignore_errors: true
|
||
|
||
- name: Remove custom volumes
|
||
community.docker.docker_volume:
|
||
name: "{{ item.volumes | default([]) | select('match', '^[^:]+$') | list }}"
|
||
state: absent
|
||
loop: "{{ hosts }}"
|
||
loop_control: { label: "{{ item.name }}" }
|
||
ignore_errors: true
|
||
when: item.volumes is defined
|
||
|
||
- name: Remove network
|
||
community.docker.docker_network:
|
||
name: "{{ docker_network }}"
|
||
state: absent
|
||
ignore_errors: true
|
||
|
||
- name: Force cleanup all project containers
|
||
shell: |
|
||
# Удаляем все контейнеры из загруженного пресета
|
||
{% for host in hosts %}
|
||
docker ps -a --filter "name={{ host.name }}" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r docker rm -f 2>/dev/null || true
|
||
{% endfor %}
|
||
# Удаляем все контейнеры с образами ansible-lab
|
||
docker ps -a --filter "ancestor=inecs/ansible-lab" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r docker rm -f 2>/dev/null || true
|
||
# Удаляем все контейнеры с сетью labnet
|
||
docker ps -a --filter "network=labnet" --format "{{ '{{' }}.ID{{ '}}' }}" | xargs -r docker rm -f 2>/dev/null || true
|
||
ignore_errors: true
|
||
vars:
|
||
# Используем переменную hosts из загруженного пресета
|
||
hosts: "{{ hosts }}"
|
||
|
||
- name: Display cleanup summary
|
||
debug:
|
||
msg: |
|
||
🧹 Cleanup Summary:
|
||
- Removed containers: {{ hosts | length }}
|
||
- Removed DinD volumes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list | length }}
|
||
- Network: {{ docker_network }}
|
||
- Removed kind clusters: {{ kind_clusters | default([]) | length }} |