基本構成の作成

このページでは、デプロイの作成時に使用できる構成を作成する方法について説明します。デプロイの詳細については、デプロイを作成するをご覧ください。

構成ファイルには、デプロイを構成する Google Cloud Platform リソースをすべて定義する必要があります。構成ファイルがないとデプロイを作成できません。構成ファイルは YAML 構文で記述する必要があります。

始める前に

構成ファイルの構造

構成ファイルは YAML 形式で記述します。構造は次のとおりです。

imports:
- path: path/to/template.jinja
  name: my-template
- path: path/to/another/template.py

resources:
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value

各セクションには、デプロイの異なる部分を定義します。

  • imports セクションは、構成で使われるテンプレート ファイルのリストです。Deployment Manager は、インポートしたテンプレートを再帰的に展開し、最終構成を作成します。

  • resources セクションは、このデプロイを構成するリソースのリストです。 リソースには次のものがあります。

  • Compute Engine VM インスタンスなど、Google 管理の基本タイプ。
  • インポートされたテンプレート
  • 複合タイプ
  • タイプ プロバイダ

outputsmetadata など、省略可能なセクションを追加することもできます。outputs セクションを使用してテンプレートと構成のデータを出力として公開すると、同じデプロイ内の他のテンプレートで利用することや、エンドユーザーが参照することができます。metadata セクションを使用すると、リソース間で依存関係を明示的に設定するなど、他の機能を使用できます。

1 つの構成には必ず resources セクションを宣言し、リソースのリストを記述する必要があります。他のセクションは省略可能です。

リソースタイプを宣言する

構成内で、各リソースはタイプとして指定する必要があります。タイプには、Google が管理する基本タイプ、複合タイプ、タイプ プロバイダ、インポートされたテンプレートがあります。

Google 管理の基本タイプは、GCP リソースに解決されるタイプです。たとえば、Cloud SQL インスタンスや Google Cloud Storage バケットなどが Google 管理の基本タイプになります。これらのタイプは次の構文で宣言します。

type: <api>.<api-version>.<resource-type>

たとえば、Compute Engine インスタンスの場合は、次のタイプを指定します。

type: compute.v1.instance

BigQuery データベースの場合は、次のタイプを指定します。

type: bigquery.v2.dataset

サポートされるすべてのタイプを確認する場合は、次のコマンドを実行することで、完全なリストを取得できます。

gcloud deployment-manager types list

サポートされる Google 管理の基本タイプについては、サポートされるリソースタイプのドキュメントをご覧ください。

複合タイプまたはタイプ プロバイダを使用する場合は、次のようにタイプを宣言します。

# Composite type

resources:
- name: my-composite-type
  type: [PROJECT]/composite:[TYPE_NAME]

タイプ プロバイダの場合:

# Base type

resources:
- name: my-base-type
  type: [PROJECT_ID]/[TYPE_NAME]:[COLLECTION]

テンプレートを使用する場合は、テンプレートをタイプとして宣言し、テンプレートの名前またはパスを type の値として指定します。たとえば、次の構成は、my_vm_template.jinja という名のテンプレートをインポートし、それをタイプとして提供します。

imports:
- path: path/to/template/my_vm_template.jinja
  name: my-template.jinja

resources:
- name: my-first-virtual-machine
  type: my-template.jinja

テンプレートの詳細については、基本テンプレートの作成をご覧ください。

リソース プロパティを宣言する

リソースのタイプを宣言したら、リソースに name を設定し、リソースのプロパティを指定する必要があります。たとえば、次の構成ファイルでは、vm-created-by-deployment-manager という仮想マシン インスタンスとそのプロパティを定義しています。この情報に基づき、Deployment Manager がこれらの特性を持つ VM インスタンスを作成します。

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-8
    networkInterfaces:
    - network: global/networks/default

リソースの properties を定義する際は、書き込み可能なプロパティを指定できます。プロパティが書き込み可能かどうかを確認する方法については、リソースタイプの API リファレンス ドキュメントをご覧ください。たとえば、Compute Engine リファレンスでは、一部のプロパティが出力専用としてマークされ、変更不可能になるため、このようなプロパティは構成の中では定義できません。

API によっては、リソースの作成に最小限のプロパティ セットが必要になります。たとえば、Compute Engine 永続ディスクの場合、新しいディスクを作成するときにディスク名、イメージソース、ディスクサイズなどが必要になります。具体的な API リソースの詳細については、各サービスの該当リソースのドキュメントをご覧ください。

テンプレート プロパティを定義する

構成で使用するためにテンプレートをインポートする場合は、properties セクションを使用してリソース プロパティの代わりにテンプレート プロパティの値を定義します。テンプレートにテンプレート プロパティがない場合、properties セクションを省略できます。

別の GCP サービスからリソースを作成する

最後に、構成ファイルで別の GCP サービスからリソースを作成できます。たとえば、次の構成ファイルは Compute Engine と BigQuery からリソースを作成します。

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-8
    networkInterfaces:
    - network: global/networks/default

- name: big-query-dataset
  type: bigquery.v2.dataset
  properties:
    datasetReference:
      datasetId: example_id

サポートされるリソースタイプとリソース プロパティ

サポートされる Google 管理のリソースについては、サポートされるリソースタイプのドキュメントをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Deployment Manager のドキュメント