【アップデート】VM Extension ManagerがPreviewでリリースされました

【アップデート】VM Extension ManagerがPreviewでリリースされました

2025.12.10

はじめに

こんにちは。
クラウド事業本部コンサルティング部の渡邉です。

2025年12月8日に、VM Extension Managerという機能がPreviewでリリースされました。

https://docs.cloud.google.com/compute/docs/vm-extensions/about-vm-extension-manager

最近は、BigQueryなどのデータ分析やVertex AIなどの機械学習・生成AIサービス、Cloud Runなどのサーバレスサービスのアップデートが頻繁にあるかと思いますが、Compute EngineなどのIaaS系のサービスも日々アップデートしています。
VM Extension Managerは一言でいうと、Compute EngineにOps AgentなどのVMエージェントをログイン不要な形で、インストール・管理することができるサービスです。

今回は、VM Extension Managerという機能についての解説と、実際にVM Extension Managerを利用してみた検証結果を記載します。

VM Extension Managerとは

VM Extension Managerとは、Compute Engine内にログインすることなく、Ops AgentExtension for SAPExtension for Compute WorkloadなどのVMエージェントのライフサイクル(インストール・更新・削除)を自動化・管理することができるサービスです。

alt text
VM Extension Managerの概要 (公式ドキュメント引用)

以下のような情報を定義した拡張ポリシーを作成し、スコープの条件に合致するCompute Engineを管理することができます。

  • 優先度
  • インストールする拡張機能(Ops AgentExtension for SAPExtension for Compute Workload
  • スコープ(特定のラベルを持つCompute Engine)

仮に、複数のポリシーが同じCompute Engineに適用される場合は、優先度の高いポリシーが優先されます。優先度の値の範囲は0~65535で、数値が小さいほど優先度が高くなります。デフォルトの優先度は1000となっています。
VM Extension Managerの仕組みとしては、Compute Engineにプリインストールされているゲストエージェントが定期的にGoogle Cloud側と通信して、適用される拡張ポリシーが存在するかどうかチェックしています。適用対象の拡張ポリシーがあれば、その拡張ポリシーで指定された拡張機能をインストールする仕組みになっているようです。

従来のエージェント管理の課題

これまで、Ops AgentなどのエージェントをVMにインストールする方法はいくつかありましたが、どれも一長一短がありました。

方法 課題
手動でSSH接続してインストール Compute Engineの台数が増えると現実的ではない
起動スクリプトに仕込む 既存のCompute Engineには適用できない。スクリプトの管理も面倒
Ansible/Terraformで自動化 構成管理ツールの導入・運用コストがかかる
OS Config Agent Policies 設定が複雑。エージェントのライフサイクル管理には向いていない

VM Extension Managerで何が変わるか

今までは、Ansibleなどの構成管理ツールを利用してエージェントのインストール・更新を大規模のCompute Engineに適用させていたかもしれませんが、VM Extension Managerにより、ポリシーを作成するだけで、エージェントを宣言的に管理できるようになりました。以下のような様々なケースで効果を発揮します。

  • 既存のCompute Engine: 条件に合うCompute Engineに自動的にエージェントがインストールされる
  • 新規のCompute Engine: 条件に合えば、起動後に自動的にエージェントがインストールされる
  • 更新: バージョン指定しなければ、最新版に自動更新される
  • 削除: ポリシーを消せば、VMからエージェントも自動削除される

Compute Engineの台数が多い環境や、「全Compute EngineにOps Agentを入れる」といったコンプライアンス要件がある環境、Ansible等の構成管理ツールを導入していない、または導入コストを抑えたい環境ではVM Extension Managerが力を発揮するかもしれません。

対応している拡張機能

現時点では以下の3つが対応しています。モニタリング系のエージェントが中心になっています。

拡張機能 用途 必要なAPI
Ops Agent Cloud Monitoring/Loggingへのメトリクス・ログ収集。 Cloud Monitoring API
Cloud Logging API
Extension for SAP SAP Host Agentのメトリクス収集。SAP on GCPを使っている場合に利用 Workload Manager API
Extension for Compute Workload 複数ワークロードのメトリクス収集 Workload Manager API

サポートしているOS

VM Extension Managerはインストールする拡張機能それぞれがサポートしているOSに依存します。
それぞれの拡張機能がサポートしているOSの一覧は公式ドキュメントに記載されていますので、公式ドキュメントから確認をお願いします。

拡張機能 サポートOS
Ops Agent https://docs.cloud.google.com/monitoring/agent/ops-agent#supported_operating_systems
Extension for SAP https://docs.cloud.google.com/sap/docs/agent-for-sap/latest/planning#supported_operating_systems
Extension for Compute Workload https://docs.cloud.google.com/compute/docs/instances/agent-for-compute-workloads?hl=ja#supported-os-versions

料金

VM Extension Manager自体は無料となっています。ただし、VM Extension Managerによってインストールされた拡張機能の使用には費用が掛かります。
例)Ops Agentが収集したログやメトリクスに対するCloud Logging/Monitoringの料金など。

制限事項

以下のような制限事項がありますので、認識しておいてください。特に拡張ポリシーがゾーン単位で適用される点には注意が必要です。マルチゾーンでCompute Engineを運用している場合は、それぞれのゾーン分の拡張ポリシーを作成する必要があります。

  • 1プロジェクトあたりゾーンごとに100ポリシーまで作成可能
  • ポリシーはゾーン単位で作成する必要があるため、複数リージョン・ゾーンにVMがある場合はそれぞれにポリシーが必要
  • 現時点ではBeta機能のため、GAまでに仕様が変わる可能性がある
  • ゲストエージェントのバージョンが 20241209.01 以降であること

VM Extension Managerを使ってOpsエージェントをインストールしてみた

必要なIAMロール

VM Extension Managerの操作には以下のIAMロールが必要です。

やりたいこと ロール
Extension Policyの閲覧 roles/compute.vmExtensionPolicyViewer
Extension Policyの作成・変更・削除 roles/compute.vmExtensionPolicyAdmin

前提条件

  • Google Cloudプロジェクトは作成済み
  • VPCやサブネット、Cloud Natなどのネットワーク関連のリソースは作成済み
  • Compute Engineは5台構築済み
  • Opsエージェントに必要な設定は設定済み。
    • Cloud Logging API / Cloud Monitoring APIの有効化
    • Compute Engineのサービスアカウントへのroles/monitoring.metricWriterroles/logging.logWriterのロール付与

アーキテクチャ

今回検証するアーキテクチャ図になります。

vm-extension-manager-poc-architecture
検証アーキテクチャ

Terraformを利用してCompute Engineを5台構築しています。
Opsエージェントをインストールする対象のCompute Engineには、ops=trueのラベルを付与し、Opsエージェントをインストールしない対象のCompute Engineにはops=falseのラベルを付与しています。

vm-extension-manager01
構築したCompute Engine

事前確認

まずは、構築したばかりのCompute Engine内にIAP経由で、SSHしOpsエージェントのインストール状況を確認していきます。
もちろん、5台すべて構築したてのCompute Engineのため、Opsエージェントはインストールされておりません。

vm-extension-poc-ops-false-1
your_username@vm-extension-poc-ops-false-1:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:37:12 UTC 2025
watanab+    1031  0.0  0.1   3752  1904 pts/1    S+   22:37   0:00 grep ops-agent
vm-extension-poc-ops-false-2
your_username@vm-extension-poc-ops-false-2:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:37:22 UTC 2025
watanab+    1012  0.0  0.1   3752  1912 pts/0    S+   22:37   0:00 grep ops-agent
vm-extension-poc-ops-true-1
your_username@vm-extension-poc-ops-true-1:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:37:40 UTC 2025
watanab+    1005  0.0  0.1   3752  1896 pts/0    S+   22:37   0:00 grep ops-agent
vm-extension-poc-ops-true-2
your_username@vm-extension-poc-ops-true-2:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:38:26 UTC 2025
watanab+    1015  0.0  0.1   3752  1844 pts/0    S+   22:38   0:00 grep ops-agent
vm-extension-poc-ops-true-3
your_username@vm-extension-poc-ops-true-3:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:38:47 UTC 2025
watanab+    1019  0.0  0.1   3752  1900 pts/0    S+   22:38   0:00 grep ops-agent

拡張ポリシーの作成

ここで、VM Extension ManagerのOpsエージェントインストール用拡張ポリシーを作成していきます。

  1. Google Cloudコンソールで「VM拡張機能ポリシー」を開く

vm-extension-manager02

  1. 「作成」をクリック

vm-extension-manager03

  1. 以下の情報を入力し、「作成」をクリック
  • ポリシー名: ops-agent-install-for-1a
  • 優先度: デフォルトは1000。数字が小さいほど優先される
  • スコープ
    • リージョン: asia-northeast1
    • ゾーン: asia-northeast1a
  • 拡張機能: Google CloudのOpsエージェント拡張機能
  • バージョン: 2.60.0
  • ターゲットVMインスタンス: ラベル ops:true

vm-extension-manager04

  1. 拡張ポリシーが作成されました。
    vm-extension-manager05

  2. 拡張ポリシーをクリックすると、詳細を確認することができます。

vm-extension-manager06

作成後、条件に合うCompute Engineに数分以内にOpsエージェントがインストールされます。

事後確認

拡張ポリシーを作成したので、再度Compute Engine内にIAP経由で、SSHしOpsエージェントのインストール状況を確認していきます。
ラベル ops:trueが付与された3台のCompute Engineには、Opsエージェントがインストールされていました。

vm-extension-poc-ops-false-1
your_username@vm-extension-poc-ops-false-1:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:53:30 UTC 2025
watanab+    1203  0.0  0.1   3752  1952 pts/0    S+   22:53   0:00 grep ops-agent
vm-extension-poc-ops-false-2
your_username@vm-extension-poc-ops-false-2:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:53:53 UTC 2025
watanab+    1183  0.0  0.1   3752  1840 pts/0    S+   22:53   0:00 grep ops-agent
vm-extension-poc-ops-true-1
your_username@vm-extension-poc-ops-true-1:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:54:47 UTC 2025
root        1185  0.4  2.0 1832692 20704 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/448516982465436817/plugins/ops-agent_baddabb3dac3f269/plugin --protocol=unix --address=/run/google-guest-agent/plugin-connections/ops-agent_baddabb3dac3f269.sock --errorlogfile=/var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/plugin.log
root        1262  0.5  6.0 1759328 60480 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/448516982465436817/plugins/ops-agent_baddabb3dac3f269/libexec/google_cloud_ops_agent_wrapper -config_path /etc/google-cloud-ops-agent/config.yaml -log_path /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/log/google-cloud-ops-agent/subagents/logging-module.log /var/lib/google-guest-agent/448516982465436817/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/state/fluent-bit/buffers
root        1263  2.4 13.6 1980588 135292 ?      Sl   22:54   0:00 /var/lib/google-guest-agent/448516982465436817/plugins/ops-agent_baddabb3dac3f269/subagents/opentelemetry-collector/otelopscol --config /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-opentelemetry-collector/otel.yaml --feature-gates=receiver.prometheusreceiver.RemoveStartTimeAdjustment
root        1296  0.7  2.4 1181716 24156 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/448516982465436817/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/448516982465436817/agent_state/plugins/ops-agent/state/fluent-bit/buffers
watanab+    1342  0.0  0.1   3752  1824 pts/1    S+   22:54   0:00 grep ops-agent
vm-extension-poc-ops-true-2
your_username@vm-extension-poc-ops-true-2:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:55:32 UTC 2025
root        1167  0.0  1.9 1832692 19592 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9116483163069422737/plugins/ops-agent_baddabb3dac3f269/plugin --protocol=unix --address=/run/google-guest-agent/plugin-connections/ops-agent_baddabb3dac3f269.sock --errorlogfile=/var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/plugin.log
root        1245  0.3  6.0 1685596 60284 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9116483163069422737/plugins/ops-agent_baddabb3dac3f269/libexec/google_cloud_ops_agent_wrapper -config_path /etc/google-cloud-ops-agent/config.yaml -log_path /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/log/google-cloud-ops-agent/subagents/logging-module.log /var/lib/google-guest-agent/9116483163069422737/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/state/fluent-bit/buffers
root        1246  0.6 12.8 1885348 127472 ?      Sl   22:54   0:00 /var/lib/google-guest-agent/9116483163069422737/plugins/ops-agent_baddabb3dac3f269/subagents/opentelemetry-collector/otelopscol --config /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-opentelemetry-collector/otel.yaml --feature-gates=receiver.prometheusreceiver.RemoveStartTimeAdjustment
root        1278  0.4  2.3 1181716 23684 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9116483163069422737/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/9116483163069422737/agent_state/plugins/ops-agent/state/fluent-bit/buffers
watanab+    1337  0.0  0.1   3752  1948 pts/0    S+   22:55   0:00 grep ops-agent
vm-extension-poc-ops-true-3
your_username@vm-extension-poc-ops-true-3:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 22:55:59 UTC 2025
root        1170  0.0  2.1 1832692 21564 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9186597670952967312/plugins/ops-agent_baddabb3dac3f269/plugin --protocol=unix --address=/run/google-guest-agent/plugin-connections/ops-agent_baddabb3dac3f269.sock --errorlogfile=/var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/plugin.log
root        1249  0.1  6.2 1759328 61668 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9186597670952967312/plugins/ops-agent_baddabb3dac3f269/libexec/google_cloud_ops_agent_wrapper -config_path /etc/google-cloud-ops-agent/config.yaml -log_path /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/log/google-cloud-ops-agent/subagents/logging-module.log /var/lib/google-guest-agent/9186597670952967312/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/state/fluent-bit/buffers
root        1250  0.4 12.9 1885348 128920 ?      Sl   22:54   0:00 /var/lib/google-guest-agent/9186597670952967312/plugins/ops-agent_baddabb3dac3f269/subagents/opentelemetry-collector/otelopscol --config /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-opentelemetry-collector/otel.yaml --feature-gates=receiver.prometheusreceiver.RemoveStartTimeAdjustment
root        1281  0.4  2.3 1181716 23240 ?       Sl   22:54   0:00 /var/lib/google-guest-agent/9186597670952967312/plugins/ops-agent_baddabb3dac3f269/subagents/fluent-bit/bin/fluent-bit --config /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_main.conf --parser /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/run/google-cloud-ops-agent-fluent-bit/fluent_bit_parser.conf --storage_path /var/lib/google-guest-agent/9186597670952967312/agent_state/plugins/ops-agent/state/fluent-bit/buffers
watanab+    1350  0.0  0.1   3752  1952 pts/0    S+   22:55   0:00 grep ops-agent

拡張ポリシーの削除

拡張ポリシーを削除すると、拡張ポリシーによってインストールされたOpsエージェントも削除されるか検証してみたいと思います。
拡張ポリシーを削除します。

vm-extension-manager07

拡張ポリシーが削除されました。
vm-extension-manager08

先ほど、拡張ポリシーによって、ラベル ops:trueが付与された3台のCompute Engineには、Opsエージェントがインストールされていましたが、拡張ポリシーの削除に伴いアンインストールされていました。

vm-extension-poc-ops-true-1
your_username@vm-extension-poc-ops-true-1:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 23:29:01 UTC 2025
watanab+    1906  0.0  0.1   3752  1816 pts/0    S+   23:29   0:00 grep ops-agent
vm-extension-poc-ops-true-2
your_username@vm-extension-poc-ops-true-2:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 23:29:45 UTC 2025
watanab+    1878  0.0  0.2   3752  1992 pts/0    S+   23:29   0:00 grep ops-agent
vm-extension-poc-ops-true-3
your_username@vm-extension-poc-ops-true-3:~$ date && ps aux | grep 'ops-agent'
Tue Dec  9 23:30:11 UTC 2025
watanab+    1884  0.0  0.1   3752  1836 pts/0    S+   23:30   0:00 grep ops-agent

さいごに

今回は、2025年12月8日にPreviewでリリースされたVM Extension Managerという機能について解説と検証を行ってみました。

VM Extension ManagerによってOpsエージェントを大量のCompute Engineにインストールする作業がかなり楽になると思いました。今までAnsibleや起動スクリプトでやっていた作業が、ポリシー1つで済むようになります。ポリシー変更が数分以内に反映されるのも地味に便利かと思います。
あと、VM Extension Manager自体に追加料金がかからないのも嬉しいポイントです。

一方で、ゾーン単位でポリシーを作る必要があるのは少し面倒かと感じました。マルチゾーンやマルチリージョンで展開している環境だと、各ゾーンごとにポリシーを作らないといけません。100ポリシーの上限もあるので、大規模環境ではラベルをうまく使って条件指定することでポリシー数を抑える設計が必要になると思います。

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部コンサルティング部の渡邉でした!

この記事をシェアする

FacebookHatena blogX

関連記事