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


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

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

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

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

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

始める前に

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

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

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

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

必要なロール

プレースメント ポリシーの置換、削除、または消去に必要な権限を取得するには、プロジェクトに対する 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. 既存の VM のプロパティをエクスポートするには、gcloud compute instances export コマンドを使用します。

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

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

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

    • FILE_PATH: VM 構成ファイルを保存するパス。

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

  2. 任意のテキスト エディタで、VM 構成ファイルを開きます。

  3. プレースメント ポリシーを別の既存のポリシーに置き換えるには、resourcePolicies フィールドの値を別のプレースメント ポリシーに置き換えます。

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

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

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

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

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

    VM の他のプロパティを変更することもできます。詳細については、更新できるプロパティをご覧ください。

  4. VM プロパティを更新するの残りの手順を実施します。

REST

  1. 既存の 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 の名前。

    このリクエストにより、VM の構成の詳細が返されます。

  2. プレースメント ポリシーを別の既存のポリシーに置き換えるには、resourcePolicies フィールドの値を別のプレースメント ポリシーに置き換えます。

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

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

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

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

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

    VM の他のプロパティを変更することもできます。詳細については、更新できるプロパティをご覧ください。

  3. 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: 既存のプレースメント ポリシーの名前。

次のステップ