在服务商创建计算巢服务的过程中,需要录入模板。服务商需要先通过完成模板编写,再将模板复制到计算巢控制台的模板框中或将模板文化上传完成录入。本文以创建VPC为例,介绍如何使用JSON/YAML模板语法来编写模板并在ROS控制台验证模板。

背景信息

计算巢中的模板本质上是ROS模板。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如:ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。资源编排服务是阿里云提供的一项简化云计算资源管理的服务。更多信息,请参见什么是资源编排服务

模板编写

ROS支持JSON/YAML和Terraform两种模板语法。编写模板时可以基于模板示例进行修改,也可以直接编写模板。
  • 针对常见的场景,ROS提供了模板示例,您可以在ROS控制台的模板示例中选择适用的参考模板进行修改。其中应用场景ISV软件部署类别的模板为计算巢场景常用模板,在模板描述中给出了基于该示例的修改步骤。

    如果您采用了模板示例且改动简单,我们建议您直接进入到在ROS控制台验证模板的步骤,在创建资源栈的过程中选择模板示例并修改。

  • 针对复杂的场景,需要您自己编写模板时,您可以使用任何文本编辑工具来编写模板。

    针对JSON/YAML模板,我们推荐您在VSCode或者IntelliJ IDEA上安装插件Alibaba Cloud Toolkit来编写模板,以便获得语法自动提示。下载及使用方法请参考使用Alibaba Cloud Toolkit管理模板及资源栈(Visual Studio Code)

本文以创建VPC的JSON/YAML模板为例,介绍创建模板的操作。使用Terraform方式创建模板的详细操作,请参见创建Terraform类型模板

JSON/YAML模板中主要定义了需要创建的资源(Resources)、创建资源时需要输入的参数(Parameters)和创建完成后输出的参数(Outputs)这三个模板要素。

Resources

Resources定义了需要创建的资源,以及每一个资源包含的TypeProperties。创建VPC示例中,Resources中包含的资源如下表所示。
ROS中定义的资源类型 资源说明
ALIYUN::ECS::VPC 创建一个VPC。
说明 针对每一种阿里云的资源类型,您都可以在资源类型索引处查找其语法、属性和返回值(即输出参数),用于编写模板时的参考,以申明对于资源的具体要求。

Parameters

Parameters定义了用户在创建服务实例时,需要设置的参数。创建VPC示例中,Parameters中包含了VpcNameDescriptionVpcCidrBlockTags。这四个参数都在上面Resources中通过Ref做了引用。

Outputs

Outputs定义了用户创建服务完毕后,需要输出的信息。在创建VPC示例中,Outputs包含了VpcId 作为输出参数。用户在创建完毕后,即可获取VPC ID。

模板示例如下

{
  "ROSTemplateFormatVersion" : "2015-09-01",

  "Description" : "模板描述信息,可用于说明模板的适用场景、架构说明等。",
  "Metadata" : {
    // 关于模板的元数据信息,例如存放用于可视化的布局信息。
  },
  "Parameters" : {
    "VpcName": {
      "Type": "String",
      "Description": {
        "zh-cn": "长度为2~128个字符。必须以英文字母或汉字开头,不能以 http://或 https://开头。可包含英文字母、汉字、数字、下划线(_)和短划线(-)。",
        "en": "The name must be 2 to 128 characters in length and can contain letters, digits, underscores (_), and hyphens (-). It must start with a letter and cannot start with http:// or  https://."
      },
      "Default": null
    },
    "Description": {
      "Type": "String",
      "Description": {
        "zh-cn": "长度为2~256个字符。不能以http://和https://开头。",
        "en": "The description must be 2 to 256 characters in length. It cannot start with http:// or https://."
      },
      "Default": null
    },
    "VpcCidrBlock": {
      "Type": "String",
      "Description": {
        "zh-cn": "专有网络网段",
        "en": "The CIDR block of the VPC."
      },
      "Default": "192.168.0.0/16",
      "AllowedValues": [
        "10.0.0.0/8",
        "172.16.0.0/12",
        "192.168.0.0/16"
      ]
    },
    "Tags": {
      "Type": "Json",
      "Description": {
        "zh-cn": "最多设置20个标签,每个标签由键值对组成。标签值可以为空。",
        "en": "A maximum of 20 tags can be specified. Each tag is a key-value pair. The tag value can be left empty."
      },
      "Default": [
        {
          "Key": "ros",
          "Value": "beginner-tutorial"
        }
      ]
    }
  },
  "Resources" : {
        "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": {
          "Ref": "VpcName"
        },
        "CidrBlock": {
          "Ref": "VpcCidrBlock"
        },
        "Description": {
          "Ref": "Description"
        },
        "Tags": {
          "Ref": "Tags"
        }
      }
    }
  },
  "Outputs" : {
    "VpcId": {
      "Description": "The VPC ID allocated by the system.",
      "Value": {
        "Fn::GetAtt": [
          "Vpc",
          "VpcId"
        ]
      }
    }
  }
}

您还可以使用进阶功能Metadata、Mappings、Conditions,进阶功能的详细信息,请参见模板结构说明

在ROS控制台验证模板

完成模板编写后,您可以通过ROS控制台创建资源栈进行验证。

  1. 登录ROS控制台
  2. 在左侧导航栏中,单击资源栈
  3. 在页面左上角,选择创建资源栈>使用新资源(标准)
    创建资源栈
  4. 使用新资源(标准)页面,完成页面信息配置。
    1. 指定模板框中,可以选择选择已有模板,将之前编写完成的模板复制到模板内容中;也可以选择使用实例模板,选择实例模板呈现在模板内容中后进行修改。
      录入模板
    2. 单击下一步,进入配置模板参数页面,检查参数的正确性。并通过预览模板资源功能验证资源设置是否正确。
      配置模板参数
    3. 可选:单击下一步进入配置资源栈(可选)页面。完成页面信息配置。
    4. 可选:单击下一步,进入检查并确认(可选)页面,确认配置信息。
    5. 单击创建
    说明 配置资源栈(可选)检查并确认(可选)为可选步骤,可根据实际规划选择是否需要执行这两步。

创建资源栈成功即校验模板成功,如果创建失败,请查看失败原因,并调整模板。