- Переименован пресет geop.yml в cod.yml - Обновлены все группы с geop на cod - Добавлена поддержка ARM64 для Astra Linux и RedOS - Создан Dockerfile.arm64 для RedOS с исправлением конфликтов пакетов - Улучшены разделители в логах Molecule - Зашифрован файл vault/secrets.yml - Обновлена роль devops с поддержкой vault - Добавлены шаблоны для SSH и sudoers конфигураций
128 lines
6.0 KiB
YAML
128 lines
6.0 KiB
YAML
---
|
||
# =============================================================================
|
||
# 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: 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
|
||
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
|
||
|
||
# =============================================================================
|
||
# ОЧИСТКА СЕТИ - Удаление Docker сети
|
||
# =============================================================================
|
||
- name: Network cleanup
|
||
debug:
|
||
msg: |
|
||
================================================================================
|
||
ОЧИСТКА СЕТИ - Удаление Docker сети
|
||
================================================================================
|
||
Network: {{ docker_network }}
|
||
================================================================================
|
||
|
||
- 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
|
||
================================================================================
|
||
Containers: {{ hosts | length }}
|
||
Volumes: {{ hosts | selectattr('type','defined') | selectattr('type','equalto','dind') | list | length }}
|
||
Network: {{ docker_network }}
|
||
Clusters: {{ kind_clusters | default([]) | length }}
|
||
================================================================================
|