テンプレートは、インフラストラクチャとアーキテクチャの設計図として機能します。テンプレートでクラウドサービスリソースとその依存関係を定義し、Resource Orchestration Service (ROS) を使用してリソースをデプロイできます。このトピックでは、テンプレートの作成とテスト、およびテンプレートでのリソースとその依存関係の定義方法について説明し、テンプレートをすぐに使い始められるようにします。
背景情報
最初の ROS テンプレートを作成する前に、テンプレートの構造をよく理解しておくことをお勧めします。詳細については、「テンプレートコンテンツの使用を開始する」をご参照ください。
このトピックでは、簡単なテンプレートを作成およびテストするプロセスを順を追って説明します。この例では、テンプレートを使用して仮想プライベートクラウド (VPC) を作成します。また、このトピックでは、リソース、リソース間の依存関係、パラメータなどの高度な設定をテンプレートで定義して、さまざまなデプロイシナリオでテンプレートを適用する方法についても説明します。このトピックには、次のセクションが含まれています。
テンプレートの作成
テンプレートを作成するには、テンプレートの リソース セクションで、作成するリソースを宣言する必要があります。サービス別リソースタイプのリスト を参照して、ROS でサポートされているすべてのリソースタイプを表示できます。次に、このドキュメントのリソースタイプをクリックして、サポートされているプロパティと戻り値の詳細を表示できます。テンプレートの作成方法の詳細については、「テンプレートコンテンツの使用を開始する」をご参照ください。次のサンプルテンプレートは、VPC を作成するために使用されます。
ROSTemplateFormatVersion: '2015-09-01'
Resources:
VPC:
Type: ALIYUN::ECS::VPC
Properties:
VpcName: myvpc
CidrBlock: 192.168.0.0/16
Outputs:
VpcId:
Value:
Ref: VPC
VRouterId:
Value:
Fn::GetAtt:
- VPC
- VRouterIdテンプレートのテスト
テンプレートを作成したら、テンプレートを使用してリソースを想定どおりに作成できるかどうかをテストできます。テンプレートをテストするには、テンプレートを使用してスタックを作成します。
ROS コンソール にログインします。
スタックを作成します。
左側のナビゲーションペインで、[スタック] をクリックします。
上部のナビゲーションバーで、リージョンドロップダウンリストからスタックを作成するリージョンを選択します。たとえば、中国 (杭州) を選択できます。
[スタック] ページで、[スタックの作成] をクリックし、ドロップダウンリストから [ROS を使用する] を選択します。
[テンプレートの選択] ステップで、[テンプレートの指定] セクションの [既存のテンプレートを選択] を選択し、[テンプレートのインポート方法] パラメータを [テンプレートコンテンツを入力] に設定します。[テンプレートコンテンツ] セクションの [ROS] タブで、このトピックの テンプレートの作成 セクションで作成した YAML テンプレートを入力します。次に、[次へ] をクリックします。
[パラメータの設定] ステップで、[スタック名] パラメータを指定します。
[スタック設定の構成] ステップで、[エラー時のロールバック]、[タイムアウト期間]、[タグ]、[リソースグループ]、[スタックポリシー]、[最大同時リソース数]、[削除保護]、[RAM ロール]、[スタックイベントコールバック URL]、[手動支払い] パラメータを構成し、[次へ] をクリックします。
[確認と確定] ステップで、[テンプレートリソースのプレビュー] をクリックします。[プレビュー] ダイアログボックスで、ROS によって検証されたテンプレートリソースの名前、タイプ、およびプロパティを確認します。次に、[OK] をクリックします。
[確認と確定] ステップで、[作成] をクリックします。
スタックを表示します。
スタックの名前をクリックして、スタック管理ページに移動します。[イベント] タブをクリックして、スタック内の各リソースのイベントを表示します。
[リソース] タブをクリックして、作成されたリソースを表示します。
説明リソースの詳細を表示するには、リソースの ID をクリックして関連するコンソールに移動します。この方法で、リソースが期待どおりかどうかを確認できます。
[出力] タブをクリックして、テンプレートの Outputs セクションで定義されている出力を表示します。
テンプレートでのリソースとその依存関係の定義
デプロイシナリオによっては、テンプレートでリソースとその依存関係を定義する必要がある場合があります。たとえば、vSwitch が VPC に依存するデプロイシナリオでは、指定された VPC に vSwitch を作成する必要がある場合があります。この場合、テンプレートで VPC と vSwitch のリソースと、リソース間の依存関係を定義できます。その後、テンプレートを使用して、複雑なシナリオでスタックをデプロイできます。
Fn::GetAtt 関数を呼び出して、リソースの出力プロパティ値を取得します。詳細については、「関数」をご参照ください。
たとえば、Resources セクションで VPC を定義する場合は、
{"Fn::GetAtt": ["VPC", "VpcId"]}を使用して VpcId の値を取得できます。Ref 関数を呼び出して、リソースの ID またはパラメータの値を参照します。詳細については、「関数」をご参照ください。
たとえば、リソースセクションで VPC を定義した場合、
{"Ref": "VPC"}を使用して VPC の ID を参照できます。説明{"Ref": "VPC"}と{"Fn::GetAtt": ["VPC", "VpcId"]}は同じ効果があります。ただし、{"Ref": "VPC"} の方が {"Fn::GetAtt": ["VPC", "VpcId"]} よりも設定が簡単です。Ref 関数と Fn::GetAtt 関数を呼び出して、リソース間の依存関係を暗黙的に宣言できます。また、DependsOn プロパティを使用して、リソース間の依存関係を明示的に宣言することもできます。詳細については、「DependsOn」をご参照ください。
テンプレートを最適化します。
次のサンプルコードは、テンプレートを最適化する方法の例を示しています。この例では、myvsw という名前の vSwitch が宣言されています。 vSwitch のゾーン ID は cn-beijing-f です。 vSwitch の CIDR ブロックは 192.168.0.0/24 です。 VPC は vSwitch によって参照されます。 vSwitch ID は Outputs セクションで定義されています。
ROSTemplateFormatVersion: '2015-09-01' Resources: VPC: Type: ALIYUN::ECS::VPC Properties: VpcName: myvpc CidrBlock: 192.168.0.0/16 VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VpcId: Ref: VPC ZoneId: cn-beijing-f VSwitchName: myvsw CidrBlock: 192.168.0.0/24 Outputs: VpcId: Value: Fn::GetAtt: - VPC - VpcId VRouterId: Value: Fn::GetAtt: - VPC - VRouterId VSwitchId: Value: Ref: VSwitch
テンプレートでのパラメータ値とプロパティの定義
パラメータ セクションを使用すると、テンプレートの柔軟性と再利用性を向上させることができます。テンプレートの Parameters セクションでパラメータ値とプロパティを定義して、ビジネス要件を満たすことができます。たとえば、パラメータの有効な値を選択可能なオプションとして表示したり、同じタイプのパラメータをグループ化したりできます。
リソースプロパティをパラメータとして定義する
テンプレートでリソースプロパティにリテラル値を指定できます。ただし、テンプレートを別のシナリオで使用するたびに、テンプレートのプロパティのリテラル値を変更する必要があります。たとえば、テンプレートで ZoneId を cn-beijing-f に設定した場合、テンプレートを使用して中国 (北京) リージョンにのみスタックを作成できます。別のリージョンにスタックを作成する場合は、テンプレートの ZoneId のリテラル値を変更する必要があります。テンプレートの再利用性を向上させるには、Resources セクションで頻繁に使用されるプロパティまたは複数のリソースで共有されるプロパティを Parameters セクションに追加し、プロパティをパラメータとして定義します。このようにして、テンプレートを使用するたびに異なるプロパティ値を持つリソースを作成するために、異なるパラメータ値を指定できます。次の表に、テンプレートで定義できるパラメータを示します。次のサンプルコードは、テンプレートでパラメータを定義する方法の例を示しています。
テンプレートのパラメータ
パラメータ
説明
ZoneIdこのパラメータは、vSwitch の ZoneId プロパティによって参照されます。
VpcCidrBlockこのパラメータは、VPC の CidrBlock プロパティによって参照されます。デフォルト値: 192.168.0.0/16。
VSwitchCidrBlockこのパラメータは、vSwitch の CidrBlock プロパティによって参照されます。デフォルト値: 192.168.0.0/24。
テンプレートのサンプルコード:
ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String VpcCidrBlock: Type: String Default: 192.168.0.0/16 VSwitchCidrBlock: Type: String Default: 192.168.0.0/24 Resources: VPC: Type: ALIYUN::ECS::VPC Properties: VpcName: myvpc CidrBlock: Ref: VpcCidrBlock VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VpcId: Ref: VPC ZoneId: Ref: ZoneId VSwitchName: myvsw CidrBlock: Ref: VSwitchCidrBlock Outputs: VpcId: Value: Ref: VPC VRouterId: Value: Fn::GetAtt: - VPC - VRouterId VSwitchId: Value: Ref: VSwitchサンプルテンプレートを使用してスタックを作成する場合、ビジネス要件に基づいて ROS コンソールでパラメータ値を指定できます。

ROS は、テンプレートのパラメータとリソースプロパティ間の関連付けを分析して、各パラメータの有効な値のセットを表示します。この例では、テンプレートの ZoneId パラメータは、vSwitch の ZoneId プロパティに関連付けられています。 ROS は、vSwitch がサポートされているゾーンをクエリし、コンソールにゾーンを表示します。

有効な値をパラメータの選択可能なオプションとして表示する
パラメータ セクションは、パラメータプロパティをサポートしています。 Parameters セクションでパラメータプロパティを定義すると、ROS はコンソールにパラメータプロパティと値を表示します。次の表に、テンプレートで定義できるパラメータプロパティを示します。次のサンプルコードは、テンプレートでパラメータプロパティを定義する方法の例を示しています。
Parameters セクションのパラメータプロパティ
パラメータプロパティ
説明
AllowedValues
パラメータの有効な値。値は、ROS コンソールで選択可能なオプションとして表示されます。この例では、VpcCidrBlock パラメータの有効な値は、10.0.0.0/8、172.16.0.0/12、および 192.168.0.0/16 です。
Label
パラメータのエイリアス。パラメータのエイリアスは、ROS コンソールに表示されます。この例では、ゾーン ID が ROS コンソールに ZoneId のエイリアスとして表示されます。
テンプレートのサンプルコード:
ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String Label: Zone ID VpcCidrBlock: Type: String Label: VPC CIDR Block Default: 192.168.0.0/16 AllowedValues: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 VSwitchCidrBlock: Type: String Label: vSwitch CIDR Block Default: 192.168.0.0/24サンプルテンプレートを使用してスタックを作成する場合、ROS はコンソールに有効な値のセットを選択可能なオプションとして表示します。

パラメータの値に基づいて異なるパラメータセットを表示する
パラメータの AssociationProperty プロパティと AssociationPropertyMetadata プロパティを定義すると、ROS は、パラメータに選択された値に基づいて、コンソールに異なるパラメータセットの値を表示します。詳細については、「AssociationProperty および AssociationPropertyMetadata」をご参照ください。
たとえば、テンプレートで VpcId パラメータと vSwitchId パラメータを定義し、テンプレートを使用して Elastic Compute Service (ECS) インスタンスを作成する場合、ROS はコンソールのドロップダウンリストにパラメータの値を表示します。テンプレートのサンプルコード:
ROSTemplateFormatVersion: '2015-09-01' Parameters: VpcId: Type: String AssociationProperty: ALIYUN::ECS::VPC::VPCId ZoneId: Type: String AssociationProperty: ALIYUN::ECS::ZoneId VSwitchId: Type: String AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId AssociationPropertyMetadata: ZoneId: ${ZoneId} VpcId: ${VpcId}サンプルテンプレートを使用してスタックを作成する場合、ROS は、パラメータに選択された値に基づいて、コンソールにパラメータセットを表示します。

同じタイプのパラメータをグループ化する
メタデータ セクションでパラメータをグループ化できます。テンプレートで多数のパラメータを定義する場合は、パラメータの特性に基づいてパラメータをグループ化して、ROS コンソールでのパラメータ構成を容易にすることができます。
たとえば、ZoneId を基本構成にグループ化し、
VpcCidrBlockとVSwitchCidrBlockをリソース構成にグループ化できます。メタデータセクションの ParameterGroups 部分で、基本構成とリソース構成を定義できます。テンプレートのサンプルコード:ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String VpcCidrBlock: Type: String Default: 192.168.0.0/16 VSwitchCidrBlock: Type: String Default: 192.168.0.0/24 Metadata: ALIYUN::ROS::Interface: ParameterGroups: - Parameters: - ZoneId Label: default: Basic Configurations - Parameters: - VpcCidrBlock - VSwitchCidrBlock Label: default: Resource Configurationsサンプルテンプレートを使用してスタックを作成する場合、ROS はコンソールに [基本構成] セクションと [リソース構成] セクションを表示して、グループ別にパラメータを構成できるようにします。

次のステップ
テンプレートを作成するためのベストプラクティスをよく理解しておいてください。詳細については、「テンプレートのデプロイ」をご参照ください。
テンプレートを自分のテンプレートとして保存します。詳細については、「テンプレートの作成」をご参照ください。
テンプレートを共有します。詳細については、「Alibaba Cloud アカウントとテンプレートを共有する」および「リソースディレクトリのメンバーとテンプレートを共有する」をご参照ください。
テンプレートを使用してリソース価格を見積もります。詳細については、「リソース価格の見積もり」をご参照ください。
テンプレート構文をよく理解しておいてください。詳細については、「テンプレート構文」をご参照ください。
テンプレートを使用してカスタムリソースを作成します。詳細については、「カスタムリソース」をご参照ください。
テンプレートにモジュールをネストします。詳細については、「モジュールの使用」をご参照ください。