テンプレートを使用する利点の 1 つは、カスタム テンプレート プロパティを作成して定義できる点です。テンプレート プロパティは、テンプレート ファイルに定義する任意の変数です。テンプレートを使用する設定ファイルやテンプレート ファイルで、テンプレート プロパティの値を設定できます。テンプレートを直接変更する必要はありません。プロパティを抽象化して、元のテンプレートを更新することなく、設定ごとにプロパティの値を変更できます。
たとえば、次の行は、マシンタイプの URL でテンプレート プロパティを指定しています。
machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
このテンプレートを使用する構成では、テンプレートの properties
セクションに zone
の値を設定できます。
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
Deployment Manager が zone
の値を元のテンプレートに渡します。
始める前に
- このガイドのコマンドラインの例を使用する場合、gcloud コマンドライン ツールをインストールします。
- このガイドの API の例を使用する場合は、API アクセスを設定します。
- 基本テンプレートの作成方法を理解しておきます。
- 構成の作成方法を理解しておきます。
テンプレート プロパティの作成
テンプレート プロパティを作成するには:
Jinja
Jinja で、次の構文を使用してプロパティを定義します。
{{ properties["PROJECT_NAME"] }}
次に例を示します。
Python
Python で、次の構文を使用してプロパティを定義します。
context.properties["PROPERTY_NAME"]
次に例を示します。
Python の完全なサンプルについては、Deployment Manager の GitHub リポジトリを参照してください。
最上位の設定でテンプレート プロパティに値を設定する
最上位の設定では、次の構文を使用してテンプレート プロパティに値を設定できます。
imports: - path: vm_template.jinja resources: - name: my-vm type: vm_template.jinja properties: zone: us-central1-a
テンプレートのすべてのテンプレート プロパティに値を設定する必要があります。たとえば、テンプレートに zone
、image
、network
というプロパティがある場合、最上位の構成で、これらのプロパティのすべてに値を定義します。
特定のテンプレート プロパティにデフォルト値がある場合には、スキーマを使用してデフォルト値を設定します。デフォルト値がデプロイに適切な値である場合、デフォルト値を使用するテンプレート プロパティを最上位の設定から省略できます。
コマンドラインでテンプレート プロパティに値を設定する
Deployment Manager では、テンプレートをインポートする親ファイルのテンプレート プロパティに値を設定するのではなく、Google Cloud CLI でこれらの値を直接設定できます。最上位の YAML ファイルを作成しないと、リクエストの情報に基づき、Deployment Manager がデプロイに最上位の構成を自動的に生成します。
たとえば、zone
というテンプレート プロパティを持つ次のようなテンプレートがあるとします。
Google Cloud CLI を使って、このテンプレート ファイルを直接渡し、コマンドラインでテンプレート プロパティの値を設定できます。たとえば、次のリクエストは、テンプレートを渡し、コマンドラインに直接 zone
プロパティを指定しています。
gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
--properties zone:us-central1-a
注意すべき点:
すべての値は YAML 値として解析されます。たとえば、
version: 3
は整数として渡されます。文字列として指定するには、version: \'3\'
のように値を一重引用符で囲んでエスケープします。ブール値では大文字と小文字は区別されません。
TRUE
、true
、True
は同じ値として処理されます。テンプレートで定義されたすべての必須プロパティを渡す必要があります。プロパティのサブセットだけを渡すことはできません。特定のプロパティにデフォルト値がある場合は、コマンドラインでそのプロパティを省略できます。
複数のプロパティを指定するには、Key-Value ペアをカンマ区切りで指定します。ペアは任意の順序で指定できます。次に例を示します。
gcloud deployment-manager deployments create my-igm \ --template vm_template.jinja \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
このコマンドを実行すると、Deployment Manager は指定されたテンプレートを使用してデプロイを作成します。Google Cloud Console または gcloud CLI を使用して、デプロイが作成されたことを確認できます。デプロイの表示については、マニフェストの表示をご覧ください。
次のステップ
- 環境変数を使用してプロジェクトとデプロイの情報を設定する。
- プロジェクトに、テンプレートを複合タイプとして永続的に追加する。
- テンプレートを外部にホスティングして共有する。