Ir al contenido

Consola serie

Capturado el 2026-07-28 desde uno de los CE de esta implementación. sitecli/capture-manifest.json registra qué nodo, y scripts/capture-sitecli.sh --check vuelve a verificar la superficie de comandos contra un CE en vivo.

La Consola serie de Azure se conecta al puerto serie emulado del nodo a través de la plataforma Azure. No atraviesa el plano de control de F5 Distributed Cloud, ni el plano de datos del nodo, ni ninguna ruta de red que el nodo controle, que es precisamente por lo que funciona cuando nada más lo hace.

Recurra a ella cuando un CE nunca llegó a arrancar: la registración falló, el sitio no aparece en el tenant, o el nodo está activo pero no tiene ruta de salida. En todos esos casos la API de depuración no tiene túnel por el que retransmitir. SSH sobrevive a una registración fallida, pero solo si su clave ya se escribió en el primer arranque y puede alcanzar la dirección interna del nodo desde dentro de la VNet, y ninguna de las dos cosas es cierta en un nodo con el que se encuentra por primera vez.

Pruebe Site Console antes que esta si el nodo tiene alguna ruta de red operativa: también sobrevive a una registración fallida, no necesita clave y no expulsa a quien ya esté mirando el nodo. La consola serie es lo que queda cuando lo que está roto es la propia ruta de red.

Azure exige los diagnósticos de arranque en la VM antes de conectar una consola serie. Esto lo habilita terraform/modules/ce-node:

boot_diagnostics {}

Un bloque vacío selecciona almacenamiento gestionado por Azure, de modo que no hay cuenta de almacenamiento de diagnósticos, ni política de ciclo de vida, ni clave de acceso que mantener. Confírmelo en un nodo:

Ventana de terminal
az vm show -g <resource-group> -n <vm-name> --query diagnosticsProfile
{ "bootDiagnostics": { "enabled": true } }

Conectarse requiere una sesión interactiva, pero saber si se conectaría son dos llamadas a la API. Ambas son útiles en una comprobación de estado.

El servicio debe estar habilitado para la suscripción; un administrador puede deshabilitarlo para todo el tenant:

Ventana de terminal
az rest --method get --url \
"https://management.azure.com/subscriptions/<sub>/providers/Microsoft.SerialConsole/consoleServices/default?api-version=2018-05-01"
{ "properties": { "disabled": false } }

Después, solicite una conexión al puerto serie de un nodo concreto:

Ventana de terminal
az rest --method post \
--headers "Content-Type=application/json" --body '{}' --url \
"https://management.azure.com/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Compute/virtualMachines/<vm>/providers/Microsoft.SerialConsole/serialPorts/0/connect?api-version=2018-05-01"

Un connectionString que empiece por wss:// — en esta implementación eastus.gateway.serialconsole.azure.com — significa que la consola es conectable ahora mismo. Antes de que se habilitaran los diagnósticos de arranque, esta llamada no tenía nada a lo que conectarse.

  1. Instale la extensión una vez:

    Ventana de terminal
    az extension add --name serial-console
  2. Conéctese:

    Ventana de terminal
    az serial-console connect -g <resource-group> -n <vm-name>
  3. Aterriza en el propio prompt de inicio de sesión del nodo, no en un shell, detrás del aviso de auditoría del dispositivo. La consola serie demuestra que el canal funciona; no elude la autenticación.

Capturado desde f5-xc-ce-vm-01, con una elisión en el medio donde la salida de las unidades de systemd no aporta nada:

+-----------------------------------------------+
Connected to the serial port of the VM.
If no login prompt is displayed, press ENTER.
+-----------------------------------------------+
Probing EDD (edd=off to disable)... ok
Memory KASLR using RDRAND RDTSC...
init_cea_offsets KASLR using RDRAND RDTSC...
Poking KASLR using RDRAND RDTSC...
Welcome to Red Hat Enterprise Linux 9.2024.6.3 (Plow) dracut-057-44.git20230822.el9 (Initramfs)!
[ OK ] Started Dispatch Password …ts to Console Directory Watch.
... [320 lines of systemd unit output elided]
[ OK ] Started Serial Getty on ttyS0.
[ OK ] Reached target Login Prompts.
[ OK ] Started OpenSSH server daemon.
[ OK ] Started Container Runtime Interface for OCI (CRI-O).
[ 19.960784] cloud-init[1311]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:config' at Sun, 26 Jul 2026 13:13:54 +0000. Up 19.84 seconds.
[ OK ] Finished Apply the settings specified in cloud-config.
Starting Execute cloud user/final scripts...
[ OK ] Started Docker Application Container Engine.
Starting Argo Watch service...
Starting VP Manager image load...
[ OK ] Started Argo Watch service.
[ 21.544663] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 running 'modules:final' at Sun, 26 Jul 2026 13:13:56 +0000. Up 21.41 seconds.
[ 22.751629] cloud-init[1512]: Cloud-init v. 23.1.1-12.el9_3 finished at Sun, 26 Jul 2026 13:13:57 +0000. Datasource DataSourceAzure [seed=/var/lib/waagent]. Up 22.37 seconds
[ OK ] Finished Execute cloud user/final scripts.
[ OK ] Started libcontainer conta…f4b59f3b96c31ee10cd95f6eb371c.
UNAUTHORIZED ACCESS TO THIS DEVICE IS PROHIBITED
All actions performed on this device are audited
f5-xc-ce-vm-01 login: [ 123.107074] Warning: Deprecated Driver is detected: iptables will not be maintained in a future major release and may be disabled
[ 123.144641] Warning: Deprecated Driver is detected: ip6tables will not be maintained in a future major release and may be disabled

En esa transcripción hay cuatro cosas que merece la pena observar, porque responden preguntas que la API de depuración no puede:

  • cloud-init se completóDatasource DataSourceAzure, finalizado a los 22,37 segundos. Un nodo que nunca se registra suele haber fallado aquí, y aquí es donde se ve.
  • Ambos entornos de ejecución de contenedores arrancaron. Container Runtime Interface for OCI (CRI-O) y Docker Application Container Engine están cada uno [ OK ], lo cual es la prueba en tiempo de arranque del comportamiento de doble entorno de ejecución que sorprende a la gente en crictl y docker.
  • VP Manager image load y Argo Watch servicevpm y Argo arrancando.
  • El prompt es el del propio nodo, detrás de su aviso de auditoría. La consola serie le proporciona un prompt de inicio de sesión, no una sesión.

Lo que puede ver aquí y la API no puede mostrarle

Sección titulada «Lo que puede ver aquí y la API no puede mostrarle»
  • cloud-init ejecutándose, fallando o sin arrancar nunca: la causa habitual de un nodo que nunca se registra.
  • Intentos de registración contra register.ves.volterra.io, incluido un error de configuración o un token rechazado por el tenant.
  • Mensajes del kernel y del arranque de antes de que hubiera ningún agente en ejecución.
  • El nodo cuando no tiene ninguna ruta de red operativa, lo que inutiliza cualquier otra vía.

Para un nodo que está ONLINE, prefiera la API de depuración: es automatizable, produce evidencias que puede volver a generar y no ocupa el único puerto serie.