- 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
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Скрипт для удаления контейнеров из секции hosts пресета
|
||
Автор: Сергей Антропов
|
||
Сайт: https://devops.org.ru
|
||
"""
|
||
import sys
|
||
import yaml
|
||
import subprocess
|
||
|
||
def main():
|
||
if len(sys.argv) < 2:
|
||
print("Usage: delete_hosts.py <preset_file>")
|
||
sys.exit(1)
|
||
|
||
preset_file = sys.argv[1]
|
||
|
||
print(f"📋 Читаю пресет: {preset_file}")
|
||
with open(preset_file, 'r') as f:
|
||
preset = yaml.safe_load(f)
|
||
|
||
hosts = preset.get('hosts', [])
|
||
if not hosts:
|
||
print("⚠️ В пресете нет контейнеров для удаления")
|
||
sys.exit(0)
|
||
|
||
print(f"🗑️ Удаление контейнеров (всего: {len(hosts)})")
|
||
for host in hosts:
|
||
host_name = host['name']
|
||
|
||
# Проверяем существование контейнера
|
||
result = subprocess.run(f"podman ps -a --format '{{{{.Names}}}}' | grep -x {host_name}",
|
||
shell=True, capture_output=True, text=True)
|
||
if result.stdout.strip():
|
||
print(f"🗑️ Удаление контейнера: {host_name}")
|
||
subprocess.run(f"podman rm -f {host_name}", shell=True, capture_output=True, text=True)
|
||
print(f"✅ Контейнер '{host_name}' удален")
|
||
else:
|
||
print(f"⚠️ Контейнер '{host_name}' не найден")
|
||
|
||
print("✅ Удаление завершено")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|