main
parent
a8f72dab2b
commit
ffdd0e4112
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue