拡張機能ポリシーを作成して VM 拡張機能をインストールする

このドキュメントでは、VM 拡張機能ポリシーを作成して、Compute Engine 仮想マシン(VM)のフリートで拡張機能を自動的にインストールして管理する方法について説明します。ポリシーを定義すると、VM ラベルなどの指定した条件に一致する VM に特定の拡張機能がインストールされ、維持されるようになります。

始める前に

必要な IAM のロール

拡張機能ポリシーの作成に必要な権限を取得するには、管理者に VM 拡張機能ポリシー管理者 roles/compute.vmExtensionPolicyAdmin)の IAM ロールの付与を依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、拡張機能ポリシーの作成に必要な compute.vmExtensionPolicies.create 権限が含まれています。

カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。

Compute Engine の IAM ロールと権限の詳細については、Compute Engine のロールと権限をご覧ください。

VM 拡張機能ポリシーを作成する

VM 拡張機能ポリシーを作成するには、次のいずれかの方法を使用します。このポリシーは、インストールする拡張機能とインストール先の VM を定義します。

コンソール

  1. Google Cloud コンソールで、[VM 拡張機能ポリシー] ページに移動します。

    VM 拡張機能ポリシーに移動

  2. [拡張機能ポリシーを作成] をクリックします。
  3. [名前] フィールドに、ポリシーの名前を入力します。
  4. 省略可: [説明] フィールドに、ポリシーの説明を入力します。
  5. [優先度] フィールドで、ポリシー間の競合を解決するための優先度番号を指定します。数字が小さいほど優先度が高くなります。デフォルト値は 1,000 です。
  6. [ゾーン] リストで、このポリシーを適用するゾーンを選択します。
  7. [拡張機能] セクションで、[拡張機能を追加] をクリックし、ターゲット VM にインストールする拡張機能ごとに次の操作を行います。
    1. [拡張機能] リストから拡張機能を選択します。サポートされている拡張機能をご覧ください。
    2. [バージョン] リストで、拡張機能のバージョン番号を指定します。最新バージョンを選択する場合は、空白のままにします。
      • Ops エージェントの場合は、バージョン 2.58.0 以降を指定できます。
      • Extension for SAP ワークロードと Extension for Compute ワークロードの場合は、フィールドを空白のままにして最新バージョンを選択します。
    3. 省略可: [構成ファイルの内容] フィールドに、拡張機能の構成パラメータを入力します。
  8. [ターゲット VM インスタンス] セクションで、ポリシーの VM を選択します。特定のラベルを持つ VM を選択するには、[ラベルを追加] をクリックして Key-Value ペアを追加します。
  9. [作成] をクリックします。

gcloud

VM 拡張機能ポリシーを作成し、特定のゾーンの VM にポリシーをロールアウトするには、gcloud beta compute zone-vm-extension-policies create コマンドを使用します。

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --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

次のように置き換えます。

  • POLICY_NAME: VM 拡張機能ポリシーの名前。
  • ZONE: このポリシーが適用されるゾーン。
  • DESCRIPTION: ポリシーの説明(省略可)。
  • EXTENSION_NAME_1EXTENSION_NAME_2: ポリシーに追加する拡張機能のカンマ区切りリスト。拡張機能を少なくとも 1 つ指定する必要があります。拡張機能の有効な値は次のとおりです。
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1EXTENSION_NAME_2=VERSION_2: Key-Value ペアのカンマ区切りのリスト。Key は拡張機能名、Value は拡張機能のバージョンです。拡張機能のバージョンを指定しない場合、VM 拡張機能マネージャーは利用可能な最新バージョンを使用し、新しいバージョンが利用可能になると自動的にアップグレードします。

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1EXTENSION_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: ポリシーの優先度を定義する 0 ~ 65535 の整数。数字が小さいほど優先度が高くなります。デフォルト値は 1,000 です。

    指定した名前のポリシーがゾーンにすでに存在する場合、コマンドは失敗します。

例 1

次のコマンドは、プロジェクト test-project のゾーン us-central1-fops-agent 拡張機能をインストールする test-extension-policy という名前のポリシーを作成します。--config-from-file フラグは、Ops エージェントの YAML 構成を含むローカル ファイルへのパスを指定します。

gcloud beta compute zone-vm-extension-policies create test-extension-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

例 2

次のコマンドは、ラベル env=prod の VM のプロジェクト test-project のゾーン us-central1-fops-agent 拡張機能をインストールする test-extension-policy-2 という名前のポリシーを作成します。ポリシーの優先度は 500 に設定され、--config-from-file フラグは Ops エージェントの YAML 構成を含むローカル ファイルへのパスを指定します。

 gcloud beta compute zone-vm-extension-policies create test-extension-policy-2  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

次のステップ