- Molecule: драйвер delegated, коллекция containers.podman, create/destroy/verify на Podman - Makefile: все вызовы docker заменены на podman, сокет /run/podman/podman.sock - Сборка образов: podman build (без buildx), buildall/buildall-image — только локально без push - Ansible-controller: Podman в образе, docker-compose на podman compose, сокет Podman - K8s: Kind заменён на Minikube (драйвер podman), скрипты и Makefile обновлены - Пресеты: проверка локальных образов, без podman pull (registry запрещён) - Документация: docs/podman.md, docs/quickstart-for-dummies.md (роли, плейбук, линт, тесты, пресеты, инвентори) - README: ссылка на quickstart-for-dummies Made-with: Cursor
110 lines
5.1 KiB
YAML
110 lines
5.1 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: 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 ЗАВЕРШЕНА
|
|
================================================================================
|