gcloud または API を使用してデプロイを作成する

このページでは、デプロイの作成方法について説明します。デプロイは、構成に定義されたリソース セットをインスタンスにしたものです。デプロイを作成するには、リクエストに有効な構成をする必要があります。Google Cloud Platform のさまざまなサービスにある多数のリソースをデプロイに含めることができます。デプロイを作成すると、Deployment Manager が各 Google Cloud Platform API を通じ、記述されたリソースをすべて作成します。

始める前に

デプロイを作成する

デプロイメントを作成すると、リソースの集合体が含まれたデプロイメントのリソースを作成することになります。各リソースは、リクエスト内の構成に明示的に定義します。

gcloud

gcloud コマンドライン ツールで、deployments create コマンドを使用します。

gcloud deployment-manager deployments create my-first-deployment \
    --config vm.yaml

--config フラグは、YAML 構成ファイルへの相対パスを示します。

プロジェクト内の既存のリソースを構成に含めると、デフォルトではそれらのリソースがデプロイによって取得され、デプロイで管理できるようになります。リソースを取得しない場合は、次の gcloud beta コマンドのように --create-policy オプションを使用する必要があります。

gcloud beta deployment-manager deployments create my-first-deployment \
    --config vm.yaml --create-policy CREATE

デプロイを作成する際に使用できるポリシーについては、リソースの作成ポリシーを設定するをご覧ください。

デプロイが正常に作成されると、デプロイの記述を取得できます。

gcloud deployment-manager deployments describe my-first-deployment

API

API で、リクエスト本文にインラインで構成を指定した insert() リクエストを実行します。

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "example-config-with-templates",
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n"
  }
 }
}

テンプレートをインポートする場合、テンプレートもリクエスト本文の一部として提供する必要があります。たとえば、次の API リクエストでは、target によって vm_template.jinja という名のテンプレートがインポートされています。

POST https://www-www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments

{
 "name": "my-example-config-with-templates-2",
 "target": {
  "config": {
    "content": "imports:\n- path: vm_template.jinja\n\nresources:\n- name: my-vm\n  type: vm_template.jinja"
  },
  "imports": [
   {
    "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
    "name": "vm_template.jinja"
   }
  ]
 }
}

リソースの作成ポリシーを設定する

新しいデプロイを作成する際に、作成するリソースがプロジェクト内にすでに存在する場合、それらのリソースがデプロイによって取得されます。この場合、Deployment Manager は新しいリソースを作成しません。既存のリソースを取得しない場合は、デプロイで CREATE ポリシーを使用する必要があります。

リソースの作成には次のポリシーを使用できます。

  • CREATE_OR_ACQUIRE - (デフォルト) Deployment Manager は、プロジェクト内に存在するリソースを取得します。リソースが存在しない場合は、リソースを作成します。リソースを取得するため、Deployment Manager は、作成するリソースのプロパティの構成を確認します。同じプロパティのリソースがすでに存在する場合、Deployment Manager はそのリソースをデプロイの一部として取得します。

    Deployment Manager が確認するプロパティは、作成するリソースのタイプによって異なります。たとえば、次のようなものがあります。

    • リソースの name
    • リソースの type
    • リソースの zone または region(該当する場合)

    プロパティは、リソースに対する GET API リクエストの URL の一部になります。Deployment Manager がリソースの取得に使用するプロパティについては、リソースの GET メソッドに関する API ドキュメントをご覧ください。たとえば、Compute Engine インスタンスの場合、instances.get メソッドのリクエスト URL には、resourceId(構成内の name)、zoneproject が含まれます。

  • CREATE - Deployment Manager は、存在しないリソースを作成します。プロジェクトにすでに存在するリソースが構成に含まれていると、デプロイに失敗します。

  • ACQUIRE - Deployment Manager は、CREATE_OR_ACQUIRE と同じ条件で既存のリソースを取得します。

    プロジェクト内にすでに多数のリソースが含まれている場合、それらのリソースを 1 つのデプロイとして管理するには、ACQUIRE ポリシーを使用します。

    リソースを作成する場合と同じく、テンプレートまたは構成で、リソースの必須プロパティを指定する必要があります。プロジェクトに存在しないリソースが構成に含まれていると、デプロイに失敗します。

デプロイのリストを作成する

デプロイのリストを表示するには、GCP Console、API、または gcloud コマンドライン ツールを使用します。

Console

GCP Console の [デプロイ] ページに移動します。

gcloud

gcloud コマンドライン ツールで、deployments list サブコマンドを使用します。

gcloud deployment-manager deployments list

API

API で、デプロイ コレクションに対して空の GET リクエストを送ります。

GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments

次のステップ