プレースメント ポリシーを置換、削除、消去する


このドキュメントでは、プレースメント ポリシーの置換、削除、消去について説明します。

プレースメント ポリシーの置換、削除、消去は、次の場合に役立ちます。

  • 仮想マシン(VM)インスタンスのプレースメント ポリシーを置き換えて、VM を他の VM と比較して別の位置に移動します。

  • 他の VM に対する特定 VM の位置が不要になった場合は、VM からプレースメント ポリシーを削除します。

  • 不要になったプレースメント ポリシーを消去します。

始める前に

  • プレースメント ポリシーの制限事項を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

プレースメント ポリシーの置換、削除、または消去に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1)の IAM ロールを管理者に付与するように依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

この事前定義ロールには、プレースメント ポリシーの置換、削除、消去に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

プレースメント ポリシーを置換、削除、または消去するには、次の権限が必要です。

  • VM のプレースメント ポリシーを置換または削除する: compute.instances.update on the project
  • プレースメント ポリシーを消去する: compute.resourcePolicies.delete on the project

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

VM のプレースメント ポリシーを置き換える

VM のスプレッド プレースメント ポリシーをコンパクト プレースメント ポリシーに置き換える前に、サポートされているマシンタイプとホスト メンテナンス ポリシーが VM で使用されていることを確認してください。プレースメント ポリシーを置き換える前に VM を更新する必要がある場合は、次のいずれかまたは両方を行います。

VM のプレースメント ポリシーを置き換えた後、新しく適用されたプレースメント ポリシーを有効にするには、VM を再起動する必要があります。

VM のプレースメント ポリシーを置き換えるには、次のいずれかのオプションを選択します。

gcloud

  1. 空の YAML ファイルを作成します。

  2. 作成したばかりの YAML ファイルに VM のプロパティをエクスポートするには、gcloud compute instances export コマンドを使用します。

    gcloud compute instances export VM_NAME \
        --destination=FILE_PATH \
        --zone=ZONE
    

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

    • VM_NAME: プレースメント ポリシーを指定する既存の VM の名前。

    • FILE_PATH: 前の手順で作成した YAML ファイルのパス。

    • ZONE: VM が配置されているゾーン。

  3. YAML 構成ファイルで resourcePolicies フィールドの値を編集して、別のプレースメント ポリシーを指定します。

    resourcePolicies:
    - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME
    

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

    • PROJECT_ID: プレースメント ポリシーが配置されているプロジェクトの ID。指定できるのは、VM と同じプロジェクトにあるプレースメント ポリシーのみです。

    • REGION: プレースメント ポリシーが配置されているリージョン。

    • POLICY_NAME: プレースメント ポリシーの名前。

  4. VM を更新して再起動するには、--most-disruptive-allowed-action フラグを RESTART に設定して gcloud compute instances update-from-file コマンドを使用します。

    gcloud compute instances update-from-file VM_NAME \
        --most-disruptive-allowed-action=RESTART \
        --source=YAML_FILE \
        --zone=ZONE
    

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

    • VM_NAME: VM の名前。

    • YAML_FILE: 前の手順で変更した構成データを含む YAML ファイルのパス。

    • ZONE: VM が配置されているゾーン。

REST

  1. 空の JSON ファイルを作成します。

  2. 既存の VM のプロパティを表示するには、instances.get メソッドGET リクエストを送信します。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

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

    • PROJECT_ID: VM が配置されているプロジェクトのプロジェクト ID。

    • ZONE: VM が配置されているゾーン。

    • VM_NAME: プレースメント ポリシーを指定する既存の VM の名前。

  3. 前の手順で作成した空の JSON ファイルで、次の操作を行います。

    1. GET リクエストの出力から VM プロパティを入力します。

    2. resourcePolicies フィールドを見つけて、その値を編集して別のプレースメント ポリシーを指定します。

      "resourcePolicies": [
        "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
      ]
      

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

      • PROJECT_ID: プレースメント ポリシーが配置されているプロジェクトの ID。指定できるのは、VM と同じプロジェクトにあるプレースメント ポリシーのみです。

      • REGION: プレースメント ポリシーが配置されているリージョン。

      • POLICY_NAME: プレースメント ポリシーの名前。

  4. VM を更新して再起動するには、instances.update メソッドPUT リクエストを送信します。リクエストで、次の操作を行います。

    • リクエスト URL に、RESTART に設定された most_disruptive_allowed_action クエリ パラメータを含めます。

    • リクエスト本文には、前の手順で作成して更新した JSON ファイルの VM 構成の詳細を使用します。

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART
    
    {
      ...
      "resourcePolicies": [
        "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
      ],
      ...
    }
    

VM のプロパティの更新の詳細については、VM プロパティを更新するをご覧ください。

VM からプレースメント ポリシーを削除する

複数のアベイラビリティ ドメインを含むスプレッド プレースメント ポリシーを VM から削除する場合は、VM を停止せずに削除できます。アベイラビリティ ドメインを 1 つだけ使用してコンパクト プレースメント ポリシーまたはスプレッド プレースメント ポリシーを削除する場合は、まず VM を停止してから、VM に適用されているプレースメント ポリシーを削除する必要があります。

VM からプレースメント ポリシーを削除しても、物理的なロケーションには影響しません。ただし、VM がライブ マイグレーション中の場合、Compute Engine は VM を別の物理的なロケーションに移動することがあります。

VM からプレースメント ポリシーを削除するには、次のいずれかのオプションを選択します。

gcloud

VM からプレースメント ポリシーを削除するには、gcloud compute instances remove-resource-policies コマンドを使用します。

gcloud compute instances remove-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

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

  • VM_NAME: プレースメント ポリシーを指定する既存の VM の名前。

  • POLICY_NAME: VM に適用されるプレースメント ポリシーの名前。プレースメント ポリシーの名前を確認するには、VM の詳細を表示して、resourcePolicies フィールドの値を確認します。

  • ZONE: VM が配置されているゾーン。

REST

VM からプレースメント ポリシーを削除するには、instances.removeResourcePolicies メソッドPOST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/removeResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

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

  • PROJECT_ID: VM が配置されているプロジェクトのプロジェクト ID。

  • ZONE: VM が配置されているゾーン。

  • VM_NAME: プレースメント ポリシーを指定する既存の VM の名前。

  • REGION: プレースメント ポリシーが配置されているリージョン。

  • POLICY_NAME: VM に適用されるプレースメント ポリシーの名前。プレースメント ポリシーの名前を確認するには、VM の詳細を表示して、resourcePolicies フィールドの値を確認します。

プレースメント ポリシーを消去する

プレースメント ポリシーは、Compute Engine リソースに適用されていない場合にのみ消去できます。Compute Engine リソースに適用されている場合、プレースメント ポリシーの消去は失敗します。1 つ以上の Compute Engine リソースに適用されているプレースメント ポリシーを消去するには、次のいずれかを行います。

  • ポリシーが VM にのみ適用されていて、VM を保持する場合は、次の操作を行います。

    1. このドキュメントの説明に従って、VM からプレースメント ポリシーを削除します。

    2. このセクションの説明に従って、プレースメント ポリシーを消去します。

  • 上記以外の場合は、次の操作を行います。

    1. 省略可: このドキュメントの説明に従って、保持する VM からプレースメント ポリシーを削除します。

    2. プレースメント ポリシーを適用している他のすべての Compute Engine リソースを次の順序で消去します。

      1. VM

      2. 予約

      3. インスタンス テンプレート

    3. このセクションの説明に従って、プレースメント ポリシーを消去します。

プレースメント ポリシーを消去するには、次のいずれかの方法を選択します。

gcloud

プレースメント ポリシーを消去するには、gcloud compute resource-policies delete コマンドを使用します。

gcloud compute resource-policies delete POLICY_NAME \
    --region=REGION

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

  • POLICY_NAME: 既存のプレースメント ポリシーの名前。

  • REGION: プレースメント ポリシーが配置されているリージョン。

REST

プレースメント ポリシーを消去するには、resourcePolicies.delete メソッドDELETE リクエストを送信します。

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME

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

  • PROJECT_ID: プレースメント ポリシーが配置されているプロジェクトの ID。

  • REGION: プレースメント ポリシーが配置されているリージョン。

  • POLICY_NAME: 既存のプレースメント ポリシーの名前。

次のステップ