#!/bin/bash set -e OLD_NODE="kube.ia86.cc" NEW_NODE="newkube.ia86.cc" echo "🛑 Suppression de tous les PV existants..." for pv in $(kubectl get pv --no-headers -o custom-columns=":metadata.name"); do echo "🗑️ Suppression du PV : $pv" kubectl delete pv "$pv" --wait=false done # Attente active stricte echo "⏳ Vérification que tous les PV soient supprimés complètement..." while true; do nb=$(kubectl get pv --no-headers 2>/dev/null | wc -l) if [ "$nb" -eq 0 ]; then echo "✅ Tous les PV sont supprimés." break else echo "⌛ $nb PV encore présents... attente 5 secondes..." sleep 5 fi done echo "📦 Début de la recréation depuis $(pwd)..." for file in *.yaml; do echo "🔧 Traitement du fichier $file" cp "$file" "${file}.tmp" # Supprimer tout à partir du bloc status: avec awk (plus sûr que sed) awk ' BEGIN {skip=0} /^status:/ {skip=1} skip==0 {print} ' "${file}.tmp" > "${file}.fixed" # Remplacer le node name proprement sed -i "s/$OLD_NODE/$NEW_NODE/g" "${file}.fixed" echo "🚀 Création du PV corrigé depuis $file" kubectl apply -f "${file}.fixed" rm -f "${file}.tmp" "${file}.fixed" done echo "✅ Recréation complète sans erreurs YAML." echo "🔧 Forçage des PV en Bound (seulement ceux pas déjà Bound)..." for pv in $(kubectl get pv --no-headers | grep -v Bound | awk '{print $1}'); do echo "➡️ Forçage du PV $pv" kubectl patch pv "$pv" --type='merge' -p '{"status":{"phase":"Bound"}}' done echo "✅ Seuls les PV non-Bound ont été corrigés." echo "🔧 Suppression des claimRef pour libérer les PV..." for pv in $(kubectl get pv --no-headers | grep Released | awk '{print $1}'); do echo "➡️ Suppression du claimRef sur $pv" kubectl patch pv "$pv" --type json -p='[{"op": "remove", "path": "/spec/claimRef"}]' done echo "✅ Tous les PV sont maintenant Available."