コンテンツにスキップ

シリアルコンソール

2026-07-28 に、このデプロイメントの 1 台の CE から取得しました。sitecli/capture-manifest.json にどのノードかが記録されており、scripts/capture-sitecli.sh --check が稼働中の CE に対して コマンド面を再検証します。

Azure シリアルコンソールは、Azure プラットフォームを通じてノードのエミュレートされた シリアルポートに接続します。F5 Distributed Cloud のコントロールプレーン、ノードのデータ プレーン、ノードが制御するネットワーク経路のいずれも経由しません。だからこそ、他のすべてが 機能しないときに動作するのです。

CE が 一度も起動しなかった 場合にこれを使ってください。登録に失敗した、サイトがテナントに 存在しない、あるいはノードは起動しているが外部への経路がない、といったケースです。これらの いずれの場合も、デバッグ API には中継するトンネルがありません。SSH は登録失敗後も利用できますが、それは初回ブート時に鍵が書き込まれており、かつ VNet 内部から ノードの内部アドレスに到達できる場合に限られます。初めて向き合うノードでは、そのどちらも 成り立ちません。

ノードに 何らかの 動作するネットワーク経路があるなら、これより先に サイトコンソール を試してください。こちらも登録失敗後に利用でき、鍵も不要で、 すでにノードを見ている人を追い出すこともありません。シリアルコンソールは、壊れているのが ネットワーク経路そのものである場合に残された手段です。

Azure はシリアルコンソールを接続する前に、VM でブート診断が有効になっていることを要求します。 これは terraform/modules/ce-node で有効化されています。

boot_diagnostics {}

空のブロックは Azure マネージドストレージを選択するため、所有・管理すべき診断ストレージ アカウント、ライフサイクルポリシー、アクセスキーは存在しません。ノード上で確認します。

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

ターミナルなしで可用性を確認する

Section titled “ターミナルなしで可用性を確認する”

接続にはインタラクティブなセッションが必要ですが、接続 できるかどうか は 2 回の API 呼び出しで 分かります。どちらもヘルスチェックに有用です。

サービスはサブスクリプションに対して有効化されている必要があります。管理者はテナント全体で 無効化できます。

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

次に、特定のノードのシリアルポートへの接続を要求します。

Terminal window
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"

wss:// で始まる connectionString(このデプロイメントでは eastus.gateway.serialconsole.azure.com)が返れば、コンソールは今すぐ接続可能ということです。 ブート診断を有効化する前は、この呼び出しには接続先が存在しませんでした。

  1. 拡張機能を一度インストールします。

    Terminal window
    az extension add --name serial-console
  2. 接続します。

    Terminal window
    az serial-console connect -g <resource-group> -n <vm-name>
  3. 到達するのはシェルではなく、アプライアンスの監査バナーの背後にあるノード自身のログイン プロンプトです。シリアルコンソールは チャネル が機能することを証明しますが、認証を バイパスするものではありません。

f5-xc-ce-vm-01 から取得したもので、systemd ユニットの出力が何も付け加えない中間部分は 省略しています。

+-----------------------------------------------+
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

このトランスクリプトの中で注目に値するものが 4 つあります。デバッグ API では答えられない 問いに答えてくれるからです。

  • cloud-init が完了したDatasource DataSourceAzure、22.37 秒で終了。 登録に至らないノードは通常ここで失敗しており、それが見えるのはこの場所です。
  • 両方のコンテナランタイムが起動した。 Container Runtime Interface for OCI (CRI-O)Docker Application Container Engine がそれぞれ [ OK ] になっており、これは crictldocker で 人を驚かせるデュアルランタイム動作のブート時の証拠です。
  • VP Manager image loadArgo Watch servicevpm と Argo の起動。
  • プロンプトはノード自身のもの であり、その監査バナーの背後にあります。シリアルコンソールが 得られるのはログインプロンプトであって、セッションではありません。

API では見せられないが、ここで見えるもの

Section titled “API では見せられないが、ここで見えるもの”
  • cloud-init の実行、失敗、あるいはまったく開始されていない状態 — 登録に至らない ノードの通常の原因です。
  • register.ves.volterra.io に対する 登録試行。設定エラーや、テナントが拒否した トークンも含みます。
  • どのエージェントも稼働する前の カーネルおよびブートメッセージ
  • 動作するネットワーク経路がない 状態のノード。これは他のあらゆる経路を無効にします。

ONLINE である ノードには、デバッグ API を選んでください。スクリプト化可能であり、再実行できる 証拠を生成し、唯一のシリアルポートを占有しません。