テンプレートは、インフラストラクチャとアーキテクチャを記述する設計図です。テンプレートでクラウド リソースとその依存関係を定義し、Resource Orchestration Service (ROS) を使用してデプロイを完了できます。このトピックでは、テンプレートの記述方法とテスト方法、リソースとその依存関係の定義方法について説明し、すぐに使い始めることができるようにします。
背景情報
ROS テンプレートの構造を理解したら、最初のテンプレートの記述を始めることができます。詳細については、「テンプレート記述のクイックスタート」をご参照ください。
このトピックでは、VPC を作成する簡単なテンプレートの記述とテストについて説明します。その後、複数のリソース、その依存関係、およびパラメーターの定義など、より高度な概念へと進みます。このトピックは、次のセクションで構成されています:
テンプレートの記述
テンプレートを記述する上で最も重要な部分は、Resources セクションで作成するリソースを宣言することです。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 コンソール にログオンします。
スタックを作成します。
左側のナビゲーションウィンドウで、[スタック] をクリックします。
上部のメニューバーで、リージョンのドロップダウンリストからスタックのリージョンを選択します。たとえば、中国 (杭州) を選択します。
[スタック] ページで、[スタックの作成] をクリックします。[テンプレートの指定] セクションで、[既存テンプレートの選択] をクリックします。
説明[テンプレートの作成] または [Infrastructure Composer] を選択すると、対応するページにリダイレクトされます。
テンプレートの選択 ページで、 テンプレートの指定 エリアの 既存テンプレートの使用 をクリックします。テンプレートのインポート方法 を テンプレート内容の入力 に設定します。テンプレート内容 セクションで、 Ros タブを選択し、「テンプレートの記述」セクションの YAML テンプレートを貼り付け、 Next をクリックします。
設定パラメーター ページで、 スタック名 を入力します。
リソーススタックの設定 セクションで、 失敗時のロールバック、 タイムアウト時間、 Tags、 リソースグループ、 スタックポリシー、 リソースの最大同時数、 保護の削除、 Ramの役割、 リソーススタックイベントコールバックアドレス、 マニュアル支払い などの項目を設定し、 [Next] をクリックします。
チェックと確認 ページで、 テンプレートリソースのプレビュー をクリックします。プレビュー ダイアログボックスで、ROS が検証したリソース名、タイプ、プロパティを確認し、 決定 をクリックします。
チェックと確認 ページで、 作成 をクリックします。
スタックを表示します。
スタック管理ページで、 Event タブをクリックして、テンプレート内のリソースのイベントの一覧を表示します。
リソース タブをクリックして、作成されたリソースの詳細を表示します。
説明リソース ID をクリックしてコンソールを開き、詳細を表示して、リソースが期待どおりであることを確認することもできます。
出力 タブをクリックして、テンプレートの
Outputsセクションで定義された出力を表示します。
複数のリソースとその依存関係の定義
VPC の基本的なテンプレートの記述方法を理解したら、複数のリソースとその依存関係を定義できます。たとえば、vSwitch は VPC に依存します。つまり、特定の VPC に vSwitch を作成する必要があります。テンプレートで VPC、vSwitch、およびそれらの依存関係を定義することで、より複雑なシナリオに対応するスタックを作成できます。
関数を使用して、リソースの出力プロパティの値を取得します。
たとえば、VPC リソースが
Resourcesセクションで定義されている場合、{"Fn::GetAtt": ["VPC", "VpcId"]}を使用して、そのVpcId出力プロパティを取得できます。関数を使用して、リソース ID またはパラメーター値を取得します。
たとえば、VPC リソースが
Resourcesセクションで定義されている場合、{"Ref": "VPC"}を使用してそのリソース ID を参照できます。説明Ref関数は{"Fn::GetAtt": ["VPC", "VpcId"]}と同じ値を返しますが、{"Ref": "VPC"}のように、より簡潔に記述できます。RefおよびFn::GetAtt関数は、リソースの依存関係を暗黙的に宣言します。DependsOn 属性を使用して、依存関係を明示的に宣言することもできます。
テンプレートの最適化
次のサンプルテンプレートでは、
myvswという名前の vSwitch を追加します。これは、cn-beijing-fアベイラビリティーゾーンに作成され、CIDR ブロック192.168.0.0/24を使用し、VPC を参照します。Outputsセクションは、vSwitch ID を含めるように更新されています。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に設定した場合、その特定のアベイラビリティーゾーンでのみスタックを作成できます。アベイラビリティーゾーンを変更するには、テンプレートを手動で編集する必要があります。これを回避するには、頻繁に使用されるプロパティや共通のプロパティを抽出し、パラメーターとして定義します。これにより、テンプレートを変更することなく、スタックを作成するたびに異なるプロパティ値を指定できます。この後のサンプルテンプレートコードで定義されているパラメーターを次の表に示します。テンプレート内のパラメーター
パラメーター
説明
ZoneIdvSwitch の
ZoneIdプロパティを指定します。VpcCidrBlockVPC の
CidrBlockプロパティを指定します。デフォルトは192.168.0.0/16です。VSwitchCidrBlockvSwitch の
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 セクションでは、複数のプロパティを使用して、コンソールでのパラメーター オプションの表示方法をカスタマイズできます。この後のサンプルテンプレートコードで定義されているプロパティを次の表に示します。
パラメーターのプロパティ
プロパティ
説明
AllowedValues
パラメーターに許可される値の一覧を定義します。ROS コンソールではドロップダウン リストとして表示されます。たとえば、
VpcCidrBlockに許可される値は10.0.0.0/8、172.16.0.0/12、192.168.0.0/16です。Label
パラメーターのエイリアスを定義します。ROS コンソールに表示されます。たとえば、
ZoneIdはAvailability Zone IDと表示されます。サンプルテンプレートコード
ROSTemplateFormatVersion: '2015-09-01' Parameters: ZoneId: Type: String Label: Availability 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」をご参照ください。
たとえば、テンプレートを使用して ECS インスタンスを作成し、
VpcIdとvSwitchIdがパラメーターとして定義されていると仮定します。ROS コンソールは、VpcIdとvSwitchIdのドロップダウン リストを自動的に表示できます。サンプルテンプレートコードは次のとおりです: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 コンソールに動的に表示されます。
類似パラメーターのグループ化
Metadata セクションを使用して、関連するパラメーターをグループ化できます。テンプレートにパラメーターが多数ある場合、それらをグループ化すると、コンソールで設定しやすくなります。
たとえば、テンプレート内の ZoneId、VpcCidrBlock、および
VSwitchCidrBlockパラメーターを、基本設定とリソース設定のグループにまとめることができます。基本設定グループには ZoneId が、リソース設定グループには VpcCidrBlock とVSwitchCidrBlockがそれぞれ含まれます。これら 2 つのグループは、Metadata の 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 Settings - Parameters: - VpcCidrBlock - VSwitchCidrBlock Label: default: Resource Settingsこのテンプレートを使用してスタックを作成すると、パラメーターは ROS コンソールの
Basic SettingsおよびResource Settingsグループ内に表示されます。
関連トピック
テンプレートを迅速に記述する方法については、「テンプレートを段階的に記述する」をご参照ください。
テンプレートを個人用テンプレートとして保存するには、「テンプレートの作成」をご参照ください。
テンプレートを共有するには、「Alibaba Cloud アカウントとのテンプレートの共有」および「Resource Directory のメンバーとのテンプレートの共有」をご参照ください。
テンプレート内のリソースの価格を見積もるには、「リソース価格の見積もり」をご参照ください。
テンプレート構文の詳細については、「テンプレート構文」をご参照ください。
テンプレートを使用してカスタムリソースを作成するには、「カスタムリソース」をご参照ください。
テンプレートにモジュールをネストするには、「モジュールの使用」をご参照ください。