- Создан пресет all-images для тестирования всех 9 образов - Добавлен sudo во все Dockerfile образы - Настроены sudoers для root и пользователей - Упрощен site.yml (убрана установка sudo) - Добавлена документация для пресета all-images - Обновлен Makefile с поддержкой нового пресета - Исправлена проблема с Parsec в Astra Linux - Улучшена система очистки контейнеров Пресет all-images включает: - Debian-based: Ubuntu, Debian, Alt Linux, Astra Linux - RHEL-based: CentOS, RHEL, AlmaLinux, Rocky Linux, RedOS - Уникальные порты 8080-8088 - Переменные окружения TEST_OS и TEST_FAMILY
83 lines
3.2 KiB
YAML
83 lines
3.2 KiB
YAML
---
|
||
- 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: 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 }} |