alexandrev-tibco 2025-08-30 16:16:41 +02:00
parent a8f72dab2b
commit ffdd0e4112
1 changed files with 34 additions and 19 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -e
# Ejecutar de forma tolerante a fallos por VM; no abortar todo el script.
SUMMARY_LINES=()
@ -99,6 +99,20 @@ update_notes() {
echo "[INFO] Procesando $type $vmid..."
# Ruta del archivo de configuración del contenedor (host)
local conf_path="/etc/pve/lxc/${vmid}.conf"
# Sanear conf: comentar líneas mal formadas de notas previas (p. ej. "homepage : image")
# Solo afectamos patrones con espacio antes de los dos puntos, que no son válidos en PVE.
if [ -f "$conf_path" ]; then
if grep -qE '^[^#].*\s: ' "$conf_path"; then
echo "[WARN] $conf_path contiene líneas no válidas con ' : '. Comentándolas para restaurar parseo..."
sed -i -E 's/^([^#].*\s: .*)$/# \1/' "$conf_path" || true
fi
# Eliminar bloque anterior de notas comentadas si existe
sed -i '/^# Notes:/,$d' "$conf_path" || true
fi
# Detectar OS
os=$(pct exec "$vmid" -- cat /etc/os-release 2>/dev/null | grep '^ID=' | cut -d= -f2 | tr -d '"')
[ -z "$os" ] && echo "[WARN] No se pudo detectar OS para $type $vmid. Saltando." && return
@ -146,13 +160,13 @@ update_notes() {
;;
esac
# Ejecutar comandos
pct exec "$vmid" -- sh -c "$update_cmd"
pct exec "$vmid" -- sh -c "$install_base_pkgs || true"
pct exec "$vmid" -- sh -c "$install_tailscale || true"
pct exec "$vmid" -- sh -c "$enable_docker"
pct exec "$vmid" -- sh -c "$enable_ssh"
pct exec "$vmid" -- sh -c "$enable_tailscale_check"
# Ejecutar comandos con tolerancia a errores (no romper el flujo)
pct exec "$vmid" -- sh -c "$update_cmd" || echo "[WARN] update falló en $type $vmid, continúo"
pct exec "$vmid" -- sh -c "$install_base_pkgs || true" || true
pct exec "$vmid" -- sh -c "$install_tailscale || true" || true
pct exec "$vmid" -- sh -c "$enable_docker" || echo "[WARN] no se pudo habilitar docker en $type $vmid"
pct exec "$vmid" -- sh -c "$enable_ssh" || echo "[WARN] no se pudo habilitar ssh en $type $vmid"
pct exec "$vmid" -- sh -c "$enable_tailscale_check" || true
echo "[INFO] Verificando configuración del Docker API y métricas en $type $vmid..."
WAIT_SECS_HOST="${DOCKER_WAIT_SECONDS:-30}"
@ -347,23 +361,24 @@ OVR
docker_info_commented=$(printf "%s\n" "$docker_info" | sed "s/^/# /")
full_note=$(printf "# Notes:\n# %s\n%s\n" "$tailscale_note" "$docker_info_commented")
# Añadir al archivo de configuración del contenedor
conf_path="/etc/pve/lxc/${vmid}.conf"
# Eliminar notas anteriores si existen
sed -i '/^# Notes:/,$d' "$conf_path"
echo -e "$full_note" >> "$conf_path"
echo "[INFO] Notas actualizadas en $conf_path:"
# Añadir notas al archivo de configuración del contenedor
if [ -f "$conf_path" ]; then
echo -e "$full_note" >> "$conf_path"
echo "[INFO] Notas actualizadas en $conf_path:"
else
echo "[WARN] No existe $conf_path; no se pueden escribir notas."
fi
echo "$full_note"
}
echo "[INFO] Iniciando gestión automática de LXC..."
# Iterar sobre LXC activos
# Iterar sobre LXC activos (no detener por fallos puntuales)
for vmid in $(pct list | awk 'NR>1 {print $1}'); do
update_notes "$vmid" "LXC"
collect_lxc_summary "$vmid"
if ! update_notes "$vmid" "LXC"; then
echo "[ERROR] Falló actualización de notas para LXC $vmid; continúo con el resto."
fi
collect_lxc_summary "$vmid" || echo "[WARN] No se pudo recoger resumen para LXC $vmid"
done
# VMs: intentar obtener IPs vía QEMU Guest Agent (si disponible)