--- - 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 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: 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 }}