すべてのプロダクト
Search
ドキュメントセンター

Compute Nest:ROS テンプレートの作成と検証

最終更新日:Jun 08, 2025

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 コンソールでスタックを作成してテンプレートを検証できます。

  1. ROS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[デプロイメント] > [スタック] を選択します。

  3. [スタック] ページの左上隅にある [スタックの作成] をクリックし、[ROS を使用する] を選択します。

  4. [スタックの作成] ページで、パラメータを構成します。

    1. [テンプレートの指定] セクションで、[既存のテンプレートを選択] を選択して、作成したテンプレートの内容をテンプレートコンテンツコードエディタにコピーします。[サンプルテンプレートを使用する] を選択して、サンプルテンプレートの内容を変更することもできます。

    2. [次へ] をクリックします。[パラメータの構成] ステップで、パラメータ設定が有効かどうかを確認します。[テンプレートリソースのプレビュー] をクリックして、リソース構成が正しいかどうかを確認します。

    3. オプション。 [次へ] をクリックします。[コンプライアンス事前チェック(オプション)] ステップで、パラメータを構成します。

    4. オプション。 [次へ] をクリックします。[確認と確定(オプション)] ステップで、構成を確認します。

    5. [作成] をクリックします。

    説明

    [コンプライアンス事前チェック(オプション)] ステップと [確認と確定(オプション)] ステップはオプションです。ビジネス要件に基づいて、これらのステップを実行するかどうかを決定できます。

スタックが作成されると、テンプレートが検証され、使用可能になります。スタックの作成に失敗した場合は、失敗の原因を確認し、テンプレートを変更します。