このページでは、デプロイの作成方法について説明します。デプロイは、構成に定義されたリソース セットをインスタンスにしたものです。デプロイを作成するには、リクエストに有効な構成をする必要があります。Google Cloud のさまざまなサービスにある多数のリソースをデプロイに含めることができます。デプロイを作成すると、Deployment Manager が各 Google Cloud API を通じ、記述されたリソースをすべて作成します。
始める前に
- このガイドのコマンドラインの例を使用する場合、gcloud コマンドライン ツールをインストールします。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
- 構成を作成します。
デプロイメントを作成する
デプロイメントを作成すると、リソースの集合体が含まれたデプロイメントのリソースを作成することになります。各リソースは、リクエスト内の構成に明示的に定義します。
gcloud
Google Cloud CLI で、次のように 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
)、zone
、project
が含まれます。- リソースの
CREATE
- Deployment Manager は、存在しないリソースを作成します。プロジェクトにすでに存在するリソースが構成に含まれていると、デプロイに失敗します。ACQUIRE
- Deployment Manager は、CREATE_OR_ACQUIRE
と同じ条件で既存のリソースを取得します。プロジェクト内にすでに多数のリソースが含まれている場合、それらのリソースを 1 つのデプロイとして管理するには、
ACQUIRE
ポリシーを使用します。リソースを作成する場合と同じく、テンプレートまたは構成で、リソースの必須プロパティを指定する必要があります。プロジェクトに存在しないリソースが構成に含まれていると、デプロイに失敗します。
デプロイのリストを作成する
Google Cloud コンソール、API、Google Cloud CLI のいずれかでデプロイのリストを表示します。
コンソール
Google Cloud コンソールの [デプロイメント] ページに移動します。
gcloud
Google Cloud CLI で、次のように deployments list
サブコマンドを使用します。
gcloud deployment-manager deployments list
API
API で、デプロイ コレクションに対して空の GET
リクエストを送ります。
GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments