Compute Nest でサービスプロバイダーとしてサービスを作成する場合は、テンプレートをインポートする必要があります。最初にテンプレートを作成し、テンプレートの内容を Compute Nest コンソールのテンプレートコンテンツコードエディタにコピーするか、テンプレートをファイルとしてアップロードしてインポートできます。このトピックでは、JSON または YAML テンプレートを作成し、Resource Orchestration Service (ROS) コンソールでテンプレートを検証する方法について説明します。この例では、仮想プライベートクラウド (VPC) を使用します。
背景情報
Compute Nest のテンプレートは ROS テンプレートです。ROS で定義されているテンプレート仕様に基づいて、スタックテンプレートを作成できます。テンプレートでは、必要なクラウドコンピューティングリソース (Elastic Compute Service (ECS) や ApsaraDB RDS インスタンスなど) と、リソース間の依存関係を定義できます。ROS エンジンは、テンプレートに基づいてスタック内のすべてのリソースを自動的に作成および構成し、デプロイメントと O&M を自動化します。ROS は、クラウドコンピューティングリソースの管理を簡素化するために Alibaba Cloud によって提供されるサービスです。詳細については、「ROS とは」をご参照ください。
テンプレートの作成
ROS では、JSON、YAML、または Terraform テンプレートを作成できます。サンプルテンプレートを使用してテンプレートを作成するか、直接テンプレートを作成できます。
ROS は、一般的なシナリオのサンプルテンプレートを提供しています。ROS コンソールの サンプルテンプレート ページでサンプルテンプレートを変更することで、テンプレートを作成できます。独立系ソフトウェアベンダー (ISV) ソフトウェアデプロイメントシナリオに適したテンプレートは、Compute Nest シナリオでよく使用されます。各テンプレートの詳細ページには、テンプレートの変更方法が表示されます。
サンプルテンプレートに簡単な変更を加えてテンプレートを作成する場合は、ROS コンソールでテンプレートを検証する ステップを直接実行することをお勧めします。スタックを作成してテンプレートを検証するときに、サンプルテンプレートを選択して変更できます。
テキストエディタを使用して、複雑なシナリオのテンプレートを作成できます。
次のサンプルコードは、ECS インスタンスを作成するための YAML テンプレートの作成方法の例を示しています。
ROSTemplateFormatVersion: '2015-09-01'
# パラメータ
Parameters:
PayType:
Type: String
Label:
en: ECS Instance Charge Type
zh-cn: 中国語の説明
Default: PostPaid
AllowedValues:
- PostPaid
- PrePaid
AssociationProperty: ChargeType
AssociationPropertyMetadata:
LocaleKey: InstanceChargeType
PayPeriodUnit:
Type: String
Label:
en: Pay Period Unit
zh-cn: 中国語の説明
Default: Month
AllowedValues:
- Month
- Year
AssociationProperty: PayPeriodUnit
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
PayPeriod:
Type: Number
Description:
en: リソースの購入期間が月の場合、期間の値の範囲は 1 ~ 9、12、24、36、48、または 60 です。<br><b><font color='red'> ECS インスタンスタイプがプリペイドで有効な場合 </b></font>
zh-cn: 中国語の説明
Label:
en: Period
zh-cn: 中国語の説明
Default: 1
AllowedValues:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AssociationProperty: PayPeriod
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
EcsInstanceType:
Type: String
Label:
en: Instance Type
zh-cn: 中国語の説明
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
InstanceChargeType: ${InstanceChargeType}
InstancePassword:
NoEcho: true
Type: String
Description:
en: サーバーログインパスワード、長さ 8 ~ 30、3 つ (大文字、小文字、数字、() `~!@#$%^&*_-+=|{}[]:;<>,.?/ 特殊記号) を含む必要があります
zh-cn: 中国語の説明
Label:
en: Instance Password
zh-cn: 中国語の説明
ConstraintDescription:
en: 長さ 8 ~ 30、3 つ (大文字、小文字、数字、() `~!@#$%^&*_-+=|{}[]:;<>,.?/ 特殊記号) を含む必要があります
zh-cn: 中国語の説明
AssociationProperty: ALIYUN::ECS::Instance::Password
AllowedPattern: '^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$'
MinLength: 8
MaxLength: 30
ZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Label:
en: VSwitch Availability Zone
zh-cn: 中国語の説明
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
en: コンソール - 仮想プライベートクラウドから (vpc-xxx) で始まる ID を検索してください
zh-cn: 中国語の説明
Label:
en: VPC ID
zh-cn: 中国語の説明
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Type: String
Description:
en: 既存のビジネスネットワークスイッチのインスタンス ID、クエリ下のコンソール - 仮想プライベートクラウド - VSwitch
zh-cn: 中国語の説明
Label:
en: VSwitch ID
zh-cn: 中国語の説明
# リソース
Resources:
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: VpcId
# セキュリティグループのインバウンドポート
SecurityGroupIngress:
- PortRange: 80/80
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: internet
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
# インスタンス名
InstanceName:
Fn::Join:
- '-'
- - Ref: ALIYUN::StackName
- '[1,4]'
IoOptimized: optimized
# 課金方法
InstanceChargeType:
Ref: PayType
PeriodUnit:
Ref: PayPeriodUnit
Period:
Ref: PayPeriod
# ネットワーク構成
VpcId:
Ref: VpcId
ZoneId:
Ref: ZoneId
VSwitchId:
Ref: VSwitchId
SecurityGroupId:
Ref: EcsSecurityGroup
# ディスクのタイプとサイズ
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
MaxAmount: 1
# イメージ
ImageId: centos_7
# インスタンスタイプ
InstanceType:
Ref: EcsInstanceType
Password:
Ref: InstancePassword
# パブリック IP アドレスを有効にする
AllocatePublicIP: true
# パブリック帯域幅
InternetMaxBandwidthOut: 1
ECSRunCommand:
Type: ALIYUN::ECS::RunCommand
Properties:
InstanceIds:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
Type: RunShellScript
Sync: true
Timeout: 3600
CommandContent: |-
#!/bin/bash
# 出力構成
Outputs:
# コンソールで HTTP によって返されるエンドポイントとしてパブリック IP アドレスを表示します
Endpoint:
Description:
zh-cn: 中国語の説明
en: Public IP Addresses
Value:
Fn::Sub:
- http://${ServerAddress}
- ServerAddress:
Fn::Select:
- 0
- Fn::GetAtt:
- EcsInstanceGroup
- PublicIps
Metadata:
ALIYUN::ROS::Interface:
# パラメータグループ
ParameterGroups:
- Parameters:
- PayType
- PayPeriodUnit
- PayPeriod
Label:
default:
en: PayType Configuration
zh-cn: 中国語の説明
- Parameters:
- EcsInstanceType
- InstancePassword
Label:
default:
en: ECS Instance Configuration
zh-cn: 中国語の説明
- Parameters:
- ZoneId
- VpcId
- VSwitchId
Label:
default:
zh-cn: 中国語の説明
en: Choose existing Infrastructure上記のテンプレートでは、Parameters、Resources、Outputs、および Metadata セクションのパラメータが定義されています。
パラメータ
Parameters セクションでは、サービスインスタンスの作成時に構成する必要のあるパラメータを定義します。次の表に、この例の Parameters セクションで定義されているパラメータを示します。
パラメータ | 説明 |
PayType | 課金方法。 |
PayPeriodUnit | 購入するリソースのサブスクリプション期間の単位。 |
PayPeriod | リソースのサブスクリプション期間。 |
EcsInstanceType | ECS インスタンスのインスタンスタイプ。 |
InstancePassword | ECS インスタンスへのアクセスに使用するパスワード。 |
ZoneId | vSwitch がデプロイされているゾーンの ID。 |
VpcId | VPC の ID。 |
VSwitchId | vSwitch の ID。 |
リソース
Resources セクションでは、作成するリソースと、各リソースの Type パラメータと Properties パラメータを定義します。次の表に、この例の Resources セクションで定義されているリソースを示します。
ROS で定義されているリソースタイプ | 説明 |
ALIYUN::ECS::SecurityGroup | ECS セキュリティグループ。 |
ALIYUN::ECS::InstanceGroup | ECS インスタンス。 |
ALIYUN::ECS::RunCommand | ECS インスタンスで実行されるシェルスクリプト。 |
Alibaba Cloud リソースのタイプごとに、サービス別のリソースタイプのリストで構文、プロパティ、および戻り値 (出力パラメータ) を確認できます。詳細については、「サービス別のリソースタイプのリスト」をご参照ください。これらのパラメータは、テンプレートを作成してリソース要件を指定するときに参照できます。
出力
Outputs セクションでは、サービスの作成後に返される情報を定義します。この例では、情報はパブリック IP アドレスとして返されます。リソースが作成されると、サービスカスタマーはサービスにアクセスするための IP アドレスを取得できます。
メタデータ
Metadata を使用すると、テンプレートの Parameters セクションで定義されているパラメータをグループ化し、特定のパラメータを非表示にすることができます。パラメータの表示効果を確認するには、ROS コンソールの「パラメータの構成」ステップに進みます。次の表に、この例のパラメータグループを示します。
グループ名 | パラメータ |
PayType Configuration | PayType |
PayPeriodUnit | |
PayPeriod | |
ECS Instance Configuration | EcsInstanceType |
InstancePassword | |
Choose existing Infrastructure | ZoneId |
VpcId | |
VSwitchId |
Mappings や Conditions などの高度な機能も使用できます。高度な機能の詳細については、「テンプレートの構造」をご参照ください。
Terraform を使用してテンプレートを作成することもできます。詳細については、「Terraform テンプレートを作成する」をご参照ください。
ROS コンソールでテンプレートを検証する
テンプレートを作成したら、ROS コンソールでスタックを作成してテンプレートを検証できます。
ROS コンソール にログインします。
左側のナビゲーションウィンドウで、[デプロイメント] > [スタック] を選択します。
[スタック] ページの左上隅にある [スタックの作成] をクリックし、[ROS を使用する] を選択します。
[スタックの作成] ページで、パラメータを構成します。
[テンプレートの指定] セクションで、[既存のテンプレートを選択] を選択して、作成したテンプレートの内容をテンプレートコンテンツコードエディタにコピーします。[サンプルテンプレートを使用する] を選択して、サンプルテンプレートの内容を変更することもできます。
[次へ] をクリックします。[パラメータの構成] ステップで、パラメータ設定が有効かどうかを確認します。[テンプレートリソースのプレビュー] をクリックして、リソース構成が正しいかどうかを確認します。
オプション。 [次へ] をクリックします。[コンプライアンス事前チェック(オプション)] ステップで、パラメータを構成します。
オプション。 [次へ] をクリックします。[確認と確定(オプション)] ステップで、構成を確認します。
[作成] をクリックします。
説明[コンプライアンス事前チェック(オプション)] ステップと [確認と確定(オプション)] ステップはオプションです。ビジネス要件に基づいて、これらのステップを実行するかどうかを決定できます。
スタックが作成されると、テンプレートが検証され、使用可能になります。スタックの作成に失敗した場合は、失敗の原因を確認し、テンプレートを変更します。