VM Extension Manager は、拡張機能ポリシーを使用して VM 拡張機能を大規模に管理します。詳細については、VM Extension Manager についてをご覧ください。このドキュメントでは、VM 拡張機能ポリシーを表示、更新、削除する方法について説明します。
IAM のロールと権限
VM 拡張機能ポリシーの表示、変更、削除に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
拡張機能ポリシーを表示するには:
-
VM 拡張機能ポリシー閲覧者 (
roles/compute.vmExtensionPolicyViewer) -
VM 拡張機能ポリシー管理者 (
roles/compute.vmExtensionPolicyAdmin)
-
VM 拡張機能ポリシー閲覧者 (
-
拡張機能ポリシーを変更する: VM 拡張機能ポリシー管理者 (
roles/compute.vmExtensionPolicyAdmin) -
拡張機能ポリシーを削除する: VM 拡張機能ポリシー管理者 (
roles/compute.vmExtensionPolicyAdmin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、VM 拡張機能ポリシーの表示、変更、削除に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
VM 拡張機能ポリシーを表示、変更、削除するには、次の権限が必要です。
-
拡張機能ポリシーを表示するには:
compute.vmExtensionPolicies.list -
拡張機能ポリシーの詳細を表示するには:
compute.vmExtensionPolicies.get -
拡張機能ポリシーを変更する:
compute.vmExtensionPolicies.update -
拡張機能ポリシーを削除するには:
compute.vmExtensionPolicies.delete
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Compute Engine の IAM ロールと権限の詳細については、Compute Engine のロールと権限をご覧ください。
拡張機能ポリシーを表示する
プロジェクトの VM 拡張機能ポリシーのリストを表示したり、 Google Cloud コンソールまたは Google Cloud CLI を使用して特定のポリシーの詳細を表示したりできます。
コンソール
- Google Cloud コンソールで、[VM 拡張機能ポリシー] ページに移動します。 このページには、プロジェクト内のすべての VM 拡張機能ポリシーが一覧表示されます。
- 特定の拡張機能ポリシーの詳細を表示するには、ポリシーの名前をクリックします。
gcloud
プロジェクト内のすべての拡張機能ポリシーを表示するには、gcloud beta compute zone-vm-extension-policies list コマンドを使用します。
gcloud beta compute zone-vm-extension-policies list \ --project=PROJECT_ID \ --zone=ZONE \ --page-size=PAGE_SIZE
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。ZONE: VM 拡張機能ポリシーを一覧表示するゾーンの名前。PAGE_SIZE: ページごとに返す結果の最大数。
特定のエクステンション ポリシーの詳細を表示するには、gcloud beta compute zone-vm-extension-policies describe コマンドを使用します。
gcloud beta compute zone-vm-extension-policies describe POLICY_NAME \ --project=PROJECT_ID \ --zone=ZONE
次のように置き換えます。
POLICY_NAME: 説明する VM 拡張機能ポリシーの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。ZONE: VM 拡張機能ポリシーが配置されている Google Cloud ゾーン。
VM 拡張機能ポリシーを更新して拡張機能を変更する
ポリシーを更新すると、VM 拡張機能マネージャーは通常 1 分以内に、該当するすべての VM に変更をロールアウトします。包含ラベルを変更すると、更新されたラベルと一致するかどうかに基づいて、新しい VM に拡張機能がインストールされたり、既存の VM からアンインストールされたりする可能性があります。
コンソール
- Google Cloud コンソールで、[VM 拡張機能ポリシー] ページに移動します。
- 更新するポリシーを選択します。
- [編集] をクリックします。
- [説明]、[優先度]、[拡張機能]、[ターゲット VM インスタンス] を変更します。
- [保存] をクリックします。
gcloud
既存の VM 拡張機能ポリシーを変更するには、gcloud beta compute zone-vm-extension-policies update コマンドを使用します。gcloud を使用してポリシーを更新すると、リクエストは完全な置換として機能します。省略した省略可能なフィールドは、変更されたポリシーの既存の値を保持するのではなく、デフォルト値に戻ります。
VM 拡張機能ポリシーを更新するには、次のコマンドを実行します。
gcloud beta compute zone-vm-extension-policies update POLICY_NAME \ --zone=ZONE \ --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \ --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \ --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \ --inclusion-labels=KEY_1=VALUE_1 \ --priority=PRIORITY_NUMBER \ --description="DESCRIPTION"
次のように置き換えます。
POLICY_NAME: 更新する VM 拡張機能ポリシーの名前。ZONE: ポリシーが適用される Google Cloud ゾーン。EXTENSION_NAME_1、EXTENSION_NAME_2: 更新する拡張機能の名前。拡張機能を少なくとも 1 つ指定する必要があります。VERSION_1: 最初の VM 拡張機能のバージョン。VERSION_2: 2 番目の VM 拡張機能のバージョン。EXTENSION_NAME_1=CONFIG_FILE_PATH_1、EXTENSION_NAME_2=CONFIG_FILE_PATH_2: 拡張機能名がキーで、その拡張機能の構成ファイルへのパスが値である Key-Value ペアのカンマ区切りリスト。このパスは、拡張機能をインストールする VM ではなく、gcloudコマンドを実行する VM にあります。構成をインライン文字列として指定する場合は、
--config-from-fileではなく--configフラグを使用します(例:EXTENSION_NAME_1="CONFIG_1")。--config-from-fileまたは--configのいずれかを使用できますが、同じコマンドで両方を使用することはできません。KEY_1=VALUE_1: セレクタの包含ラベルを定義する Key-Value ペアのカンマ区切りのリスト。VM がターゲットになるには、セレクタで指定されたすべてのラベルが VM に設定されている必要があります。--inclusion-labelsを複数回指定すると、ポリシーは、指定されたセレクタのいずれかに一致する VM をターゲットにします(論理 OR)。このフラグを省略すると、ポリシーは指定されたゾーン内のすべての VM をターゲットにします。PRIORITY_NUMBER: VM 拡張機能ポリシーの優先度番号。DESCRIPTION: VM 拡張機能ポリシーの説明。
VM 拡張機能ポリシーを削除して拡張機能をアンインストールする
ポリシーを削除すると、VM Extension Manager は、そのポリシーによって管理されている VM から拡張機能をアンインストールします。ただし、別の優先度の低いアクティブ ポリシーが VM に適用され、同じ拡張機能が宣言されている場合、優先度の低いポリシーに基づいて、その拡張機能は VM にインストールされたままになります。
VM Extension Manager は、ポリシーの削除後 1 分以内に、アクセス可能なすべての VM から拡張機能を削除します。ゲスト エージェントが削除されたか、VM が削除されたために VM にアクセスできない場合、VM 拡張機能マネージャーは拡張機能の削除をスキップします。このような VM が再び利用可能になると、VM Extension Manager はその時点で拡張機能を削除します。
コンソール
- Google Cloud コンソールで、[VM 拡張機能ポリシー] ページに移動します。
- 削除するポリシーをクリックします。
- [削除] をクリックします。
- 確認ダイアログで [削除] をクリックします。
gcloud
既存の VM 拡張機能ポリシーを削除するには、gcloud beta compute zone-vm-extension-policies delete コマンドを使用します。
gcloud beta compute zone-vm-extension-policies delete POLICY_NAME \ --project=PROJECT_ID \ --zone=ZONE
次のように置き換えます。
POLICY_NAME: 削除する VM 拡張機能ポリシーの名前。PROJECT_ID: 実際の Google Cloud プロジェクト ID。ZONE: ポリシーが配置されている Google Cloud ゾーン。
VM 拡張機能のトラブルシューティング
このセクションでは、VM 拡張機能に関する問題のトラブルシューティング方法について説明します。
拡張機能がインストールされていることを確認する
拡張機能がインストールされているかどうかは、VM で次のことを確認することで検証できます。
VM に接続して、実行中のプロセスを確認します。
次の表に、各拡張機能のプロセス名を示します。
拡張機能名 拡張機能のプロセス名 google-cloud-sap-extensiongoogle_cloud_sap_agentgoogle-cloud-workload-extensiongoogle_cloud_workload_agentops-agentops-agentLinux
ps aux | grep 'EXTENSION_PROCESS_NAME'
EXTENSION_PROCESS_NAMEは、拡張機能のプロセス名に置き換えます。たとえば、Ops エージェント プロセスを確認するには、次のコマンドを実行します。ps aux | grep 'ops-agent'
Windows
tasklist | findstr "EXTENSION_PROCESS_NAME"
EXTENSION_PROCESS_NAMEは、拡張機能のプロセス名に置き換えます。たとえば、Ops エージェント プロセスを確認するには、次のコマンドを実行します。tasklist | findstr "ops-agent"
Ops エージェントの Linux VM で
psコマンドの出力に、次のようなエントリが表示されることがあります。.... /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3 ....
ゲスト エージェントのログを有効にして確認します。ゲスト エージェントのログには、拡張機能がインストールされて起動した日時が記録されます。
次の例は、Ops エージェント拡張機能がインストールされている場合にゲスト エージェントのログに表示される出力の例です。
my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87" my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]] my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-centrall-a/ops-agent my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87 my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87) my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87" my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87" my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"
インストールに関する問題のトラブルシューティング
ポリシーの作成後に VM に拡張機能がインストールされない場合は、次の手順で問題をトラブルシューティングします。
- ポリシーの適用を待ちます。ポリシーが適用されるまでには、再試行を含めて 1 時間ほどかかることがあります。
- ポリシーで指定された包含ラベルが VM のラベルと一致することを確認します。
- インストール エラーの可能性を特定するには、ゲスト エージェントのデバッグ ロギングを有効にします。
根本的な問題を修正したら、次のいずれかの方法でインストールを再試行します。
- ポリシーを再作成する: ポリシーを削除してから、新しいポリシーを作成します。
一時的な優先度の高いポリシーを使用する: 多くの VM に影響するポリシーの再作成を回避する場合は、一時的な優先度の高いポリシーを使用して、特定の VM でインストールを再試行します。
- インストールに失敗した VM に新しいラベルを追加します。たとえば、ラベル
status=failedを追加します。 - 新しいラベルをターゲットとする優先度の高いポリシーを作成します。たとえば、失敗した元のポリシーのデフォルトの優先度が
1000の場合は、500などの優先度の高いポリシーを作成します。gcloud beta compute zone-vm-extension-policies create temp-policy
--project=test-project
--zone=us-central1-f
--extensions=ops-agent
--config-from-file=ops-agent="/usr/ops-agent-config.yaml"
--priority=500
--inclusion-labels=status=failed - 拡張機能が正常にインストールされたら、一時ポリシーを削除し、VM からラベルを削除します。元のポリシーがまだ有効であるため、拡張機能はインストールされたままになります。
- インストールに失敗した VM に新しいラベルを追加します。たとえば、ラベル
ゲスト エージェントのデバッグログを表示する
デバッグ ロギングを有効にするには、次のように、ゲスト エージェント構成ファイルの Core セクションにログレベルと詳細設定を追加します。
Linux
/etc/default/instance_configs.cfgにあるゲスト エージェントの構成ファイルを開きます。次の行をファイルに追加します。
[Core]セクションがすでに存在する場合は、log_level設定とlog_verbosity設定を追加します。[Core] log_level = 4 log_verbosity = 4次のコマンドを実行して、ゲスト エージェント マネージャーを再起動します。
sudo systemctl restart google-guest-agent-manager拡張機能のインストール中のゲスト エージェント アクティビティのログを表示するには、次のコマンドを実行します。
journalctl -u google-guest-agent-manager
Windows
C:\Program Files\Google\Compute Engine\instance_configs.cfgにあるゲスト エージェントの構成ファイルを開きます。次の行をファイルに追加します。
[Core]セクションがすでに存在する場合は、log_level設定とlog_verbosity設定を追加します。[Core] log_level = 4 log_verbosity = 4Windows 管理者として次のコマンドを実行して、ゲスト エージェント マネージャーを再起動します。
net stop GCEAgentManager net start GCEAgentManager拡張機能のインストール中のゲスト エージェント アクティビティのログを表示するには、PowerShell で次のコマンドを実行します。
Get-Eventlog -Source google_guest_agent_manager -LogName Application
デバッグログを有効にしたら、次の一般的なエラーを確認します。
- ディスク容量が不足している: ログにディスク容量が不足していると報告された場合は、ディスクの空き容量を増やすか、ディスクのサイズを変更して容量を追加します。
- リソースの使用量が多すぎる: ログに、メモリまたは CPU の使用量が多すぎるため、ゲスト エージェントが拡張機能を停止したことが示されている場合は、VM のマシンタイプをより多くのリソースを持つマシンタイプに変更します。
次のステップ
- VM Extension Manager の詳細を確認する。