テンプレートは、Resource Orchestration Service (ROS) を通じてデプロイするクラウドサービスリソースとその依存関係を定義する設計図です。この例では、VPC (Virtual Private Cloud) と vSwitch を作成するテンプレートの作成方法について説明します。
前提条件
テンプレート構造の要件を理解している必要があります。詳細については、「テンプレート構造」をご参照ください。
テンプレートエディターの選択
オンラインエディターを使用できます。自動構文ヒントとリソースプロパティの検証をサポートしています。
-
オンラインエディター: インストール不要で、すぐに使用できます。シンプルなシナリオでリソースのデプロイとリソース管理のテンプレートを作成する場合に適しています。オンラインエディターの使用方法の詳細については、「ROS オンラインエディターでテンプレートを作成する」をご参照ください。
テンプレートの定義
テンプレートを定義するには、Resources セクションで作成するリソースを宣言します。サポートされているすべてのリソースタイプについては、「リソースタイプインデックス」をご参照ください。各リソースタイプのドキュメントには、サポートされているプロパティと戻り値が記載されており、プロパティが必須か編集可能かが示されています。必須プロパティは、Resources セクションの Properties 部分で宣言する必要があります。編集可能なプロパティは、スタックの更新で変更できます。編集不可能なプロパティは、作成後に変更できません。
-
目的のリソースタイプの詳細を確認します。
-
「リソースタイプインデックス」を参照して、デプロイシナリオに適したリソースタイプを見つけます。この例では、VPC と vSwitch を作成するために使用される ALIYUN::ECS::VPC と ALIYUN::ECS::VSwitch リソースタイプが適しています。
-
各リソースタイプのドキュメントを参照し、リソースプロパティを確認します。
-
-
Parameters セクションで、テンプレートのパラメーターを定義します。
VPC の VpcCidrBlock、および vSwitch の ZoneId、
VSwitchName、VSwitchCidrBlockを定義します。このセクションのパラメーターは、ROS コンソールで GUI 要素として表示されます。詳細については、「ALIYUN::ECS::VPC」および「ALIYUN::ECS::VSwitch」をご参照ください。vSwitch の CIDR ブロックは、VPC の CIDR ブロック内に収まる必要がありますが、このテンプレートでは検証が実行されないため、手動で確認する必要があります。Parameters: VpcCidrBlock: Type: String Default: 192.168.0.0/16 AllowedValues: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 ZoneId: Type: String AssociationProperty: ALIYUN::ECS::Instance::ZoneId VSwitchName: Type: String VSwitchCidrBlock: Type: String Default: 192.168.0.0/24 AllowedValues: - 10.0.0.0/24 - 172.16.0.0/24 - 192.168.0.0/24 -
Resources セクションで、作成するリソースを定義します。
vSwitch には、VpcId、ZoneId、CidrBlock が必須です。その他のプロパティはオプションです。詳細については、「ALIYUN::ECS::VPC」および「ALIYUN::ECS::VSwitch」をご参照ください。Ref 関数を使用してパラメーターを参照するか、値を直接指定します。詳細については、「Ref」をご参照ください。
Resources: Vpc: Type: ALIYUN::ECS::VPC Properties: VpcName: MyTest CidrBlock: Ref: VpcCidrBlock VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VpcId: Ref: Vpc ZoneId: Ref: ZoneId VSwitchName: Ref: VSwitchName CidrBlock: Ref: VSwitchCidrBlock -
Outputs セクションで、テンプレートの出力を定義します。
VpcId と VSwitchId を出力として定義します。詳細については、「ALIYUN::ECS::VPC」および「ALIYUN::ECS::VSwitch」をご参照ください。Fn::GetAtt 関数を使用して、リソースプロパティの値を取得します。詳細については、「Fn::GetAtt」をご参照ください。
Outputs: VpcId: Value: Fn::GetAtt: - Vpc - VpcId VSwitchId: Value: Fn::GetAtt: - VSwitch - VSwitchId -
テンプレート構造に従って、完全なテンプレートコンテンツを定義します。
ROSTemplateFormatVersion: '2015-09-01' Parameters: VSwitchName: Type: String VSwitchCidrBlock: Default: 192.168.0.0/24 Type: String AllowedValues: - 10.0.0.0/24 - 172.16.0.0/24 - 192.168.0.0/24 VpcCidrBlock: Default: 192.168.0.0/16 Type: String AllowedValues: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 ZoneId: AssociationProperty: ALIYUN::ECS::Instance::ZoneId Type: String Resources: VSwitch: Type: ALIYUN::ECS::VSwitch Properties: VSwitchName: Ref: VSwitchName VpcId: Ref: Vpc CidrBlock: Ref: VSwitchCidrBlock ZoneId: Ref: ZoneId Vpc: Type: ALIYUN::ECS::VPC Properties: VpcName: MyTest CidrBlock: Ref: VpcCidrBlock Outputs: VpcId: Value: Fn::GetAtt: - Vpc - VpcId VSwitchId: Value: Fn::GetAtt: - VSwitch - VSwitchId
次のステップ
定義したテンプレートを使用してスタックを作成するか、テンプレートをプライベートテンプレートとして保存します。詳細については、「スタックのクイックスタート」および「テンプレートの作成」をご参照ください。
関連ドキュメント
-
高度なテンプレート設定の構成:
-
「ROS テンプレートの概要」: テンプレートの作成方法について説明しています。
-
「Metadata」: テンプレートの視覚化されたレイアウトの定義方法について説明しています。
-
「Mappings」: テンプレートのマッピングの定義方法について説明しています。
-
「Conditions」および「Functions」: 組み込み関数を使用して条件を定義する方法について説明しています。
-
「Rules」: テンプレートのルールの定義方法について説明しています。
-
-
テンプレートのベストプラクティス: