このページでは、デプロイの作成時に使用できる構成を作成する方法について説明します。デプロイの詳細については、デプロイを作成するをご覧ください。
構成ファイルには、デプロイを構成する Google Cloud リソースをすべて定義する必要があります。構成ファイルがないとデプロイを作成できません。構成ファイルは YAML 構文で記述する必要があります。
始める前に
- このガイドのコマンドラインの例を使用する場合、gcloud コマンドライン ツールをインストールします。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
- 構成ファイルの基礎を理解しておきます。
構成ファイルの構造
構成ファイルは YAML 形式で記述します。構造は次のとおりです。
# imported templates, if applicable
imports:
# path relative to the configuration file
- path: path/to/template.jinja
name: my-template
- path: path/to/another/template.py
name: another-template
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
セクションは、このデプロイを構成するリソースのリストです。リソースには次のものがあります。
outputs
や metadata
など、省略可能なセクションを追加することもできます。outputs
セクションを使用してテンプレートと構成のデータを出力として公開すると、同じデプロイ内の他のテンプレートで利用できるようになります。また、エンドユーザーが参照することも可能です。metadata
セクションを使用すると他の機能も使用できます。たとえば、リソース間で依存関係を明示的に設定できます。
1 つの構成には必ず resources
セクションを宣言し、リソースのリストを記述する必要があります。他のセクションは省略可能です。
リソースタイプを宣言する
構成内で、各リソースはタイプとして指定する必要があります。タイプには、Google が管理する基本タイプ、複合タイプ、タイプ プロバイダ、インポートされたテンプレートがあります。
Google が管理する基本タイプは、Google Cloud のリソースに解決されるタイプです。 たとえば、Cloud SQL インスタンスや 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_PROVIDER_NAME]:[TYPE_NAME]
Google が管理するタイプ プロバイダ(ベータ版)を使用してリソースを作成することもできます。Google Cloud タイプ プロバイダのリストについては、サポートされているタイプ プロバイダをご覧ください。
テンプレートを使用する場合は、テンプレートをタイプとして宣言し、テンプレートの名前またはパスを 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 インスタンスを作成します。
リソースの properties
を判別するには、そのリソースの API ドキュメントを参照してください。
- リソースに対する
insert
またはcreate
メソッドでのリクエストの形式を確認します。 - リクエスト URI にゾーンが含まれている場合は、そのゾーンをプロパティに追加します。
配列には、YAML リスト構文を使用して配列の要素をリストします。たとえば、API を使用して Compute Engine インスタンスを作成する場合、インスタンスに接続するディスクの配列を次の形式で指定する必要があります。
"disks": [ { "type": "PERSISTENT", "deviceName": "disk1", ... }, { "type": "PERSISTENT", "deviceName": "disk2", ... } ]
Deployment Manager 構成には、これらのディスクを次の構文で追加します。
disks: - deviceName: disk1 type: PERSISTENT ... - deviceName: disk2 type: PERSISTENT
また、リソースの書き込み可能なプロパティを指定することもできます。プロパティが書き込み可能かどうかを確認する方法については、該当するリソースタイプの API リファレンス ドキュメントをご覧ください。たとえば、Compute Engine リファレンスでは、一部のプロパティが出力専用としてマークされ、変更不可能になるため、このようなプロパティは構成の中で定義できません。
API によっては、リソースの作成に最小限のプロパティ セットが必要になります。たとえば Compute Engine 永続ディスクの場合、新しいディスクを作成するには、ディスク名、イメージソース、ディスクサイズなどが必要です。特定のリソースの詳細については、そのリソースの API リファレンスをご覧ください。
テンプレート プロパティの定義
構成で使用するためにテンプレートをインポートする場合は、properties
セクションを使用して、リソース プロパティの代わりにテンプレート プロパティの値を定義します。テンプレートにテンプレート プロパティがない場合、properties
セクションを省略できます。
別の Google Cloud サービスからリソースを作成する
最後に、構成ファイルで別の Google Cloud サービスからリソースを作成できます。たとえば、次の設定ファイルは Compute Engine と BigQuery からリソースを作成します。
サポートされるリソースタイプとリソース プロパティ
サポートされる Google 管理のリソースについては、サポートされるリソースタイプのドキュメントをご覧ください。
次のステップ
- デプロイを commit する前に構成をプレビューする。
- 問題がなければ、この構成を使用してデプロイを作成する。
- 最後に、テンプレートを使用するように構成ファイルを修正する。