main
parent
a8f72dab2b
commit
ffdd0e4112
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -e
|
# Ejecutar de forma tolerante a fallos por VM; no abortar todo el script.
|
||||||
|
|
||||||
SUMMARY_LINES=()
|
SUMMARY_LINES=()
|
||||||
|
|
||||||
|
|
@ -99,6 +99,20 @@ update_notes() {
|
||||||
|
|
||||||
echo "[INFO] Procesando $type $vmid..."
|
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
|
# Detectar OS
|
||||||
os=$(pct exec "$vmid" -- cat /etc/os-release 2>/dev/null | grep '^ID=' | cut -d= -f2 | tr -d '"')
|
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
|
[ -z "$os" ] && echo "[WARN] No se pudo detectar OS para $type $vmid. Saltando." && return
|
||||||
|
|
@ -146,13 +160,13 @@ update_notes() {
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Ejecutar comandos
|
# Ejecutar comandos con tolerancia a errores (no romper el flujo)
|
||||||
pct exec "$vmid" -- sh -c "$update_cmd"
|
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"
|
pct exec "$vmid" -- sh -c "$install_base_pkgs || true" || true
|
||||||
pct exec "$vmid" -- sh -c "$install_tailscale || true"
|
pct exec "$vmid" -- sh -c "$install_tailscale || true" || true
|
||||||
pct exec "$vmid" -- sh -c "$enable_docker"
|
pct exec "$vmid" -- sh -c "$enable_docker" || echo "[WARN] no se pudo habilitar docker en $type $vmid"
|
||||||
pct exec "$vmid" -- sh -c "$enable_ssh"
|
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"
|
pct exec "$vmid" -- sh -c "$enable_tailscale_check" || true
|
||||||
|
|
||||||
echo "[INFO] Verificando configuración del Docker API y métricas en $type $vmid..."
|
echo "[INFO] Verificando configuración del Docker API y métricas en $type $vmid..."
|
||||||
WAIT_SECS_HOST="${DOCKER_WAIT_SECONDS:-30}"
|
WAIT_SECS_HOST="${DOCKER_WAIT_SECONDS:-30}"
|
||||||
|
|
@ -347,23 +361,24 @@ OVR
|
||||||
docker_info_commented=$(printf "%s\n" "$docker_info" | sed "s/^/# /")
|
docker_info_commented=$(printf "%s\n" "$docker_info" | sed "s/^/# /")
|
||||||
full_note=$(printf "# Notes:\n# %s\n%s\n" "$tailscale_note" "$docker_info_commented")
|
full_note=$(printf "# Notes:\n# %s\n%s\n" "$tailscale_note" "$docker_info_commented")
|
||||||
|
|
||||||
# Añadir al archivo de configuración del contenedor
|
# Añadir notas al archivo de configuración del contenedor
|
||||||
conf_path="/etc/pve/lxc/${vmid}.conf"
|
if [ -f "$conf_path" ]; then
|
||||||
|
echo -e "$full_note" >> "$conf_path"
|
||||||
# Eliminar notas anteriores si existen
|
echo "[INFO] Notas actualizadas en $conf_path:"
|
||||||
sed -i '/^# Notes:/,$d' "$conf_path"
|
else
|
||||||
echo -e "$full_note" >> "$conf_path"
|
echo "[WARN] No existe $conf_path; no se pueden escribir notas."
|
||||||
|
fi
|
||||||
echo "[INFO] Notas actualizadas en $conf_path:"
|
|
||||||
echo "$full_note"
|
echo "$full_note"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "[INFO] Iniciando gestión automática de LXC..."
|
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
|
for vmid in $(pct list | awk 'NR>1 {print $1}'); do
|
||||||
update_notes "$vmid" "LXC"
|
if ! update_notes "$vmid" "LXC"; then
|
||||||
collect_lxc_summary "$vmid"
|
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
|
done
|
||||||
|
|
||||||
# VMs: intentar obtener IPs vía QEMU Guest Agent (si disponible)
|
# VMs: intentar obtener IPs vía QEMU Guest Agent (si disponible)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue