本文以创建一组ECS实例为例,为您介绍如何将Excel模板转换为ROS模板。
Excel模板语法
您需要将参数、资源类型及属性值填入Excel模板的第一个Sheet页当中,图形示例如下:
Excel模板填写说明如下:
- 第1列:参数、资源类型及其属性。
配置项 是否必选 说明 ROS::Parameters
否 转换后的ROS模板中的参数。 在
ROS::Parameters
下方的表格中填写参数名称。您可以在第2列~第n列中通过!Ref
引用参数。ROS::Resources
是 转换后的ROS模板中的资源。 在
ROS::Resources
下方的表格中填写资源类型,然后填写资源类型对应的属性名称。您可以按照相同方法定义多个资源类型。关于资源类型的更多信息,请参见资源类型索引。
- 第2列~第n列:参数取值或资源类型的属性值。每一列代表一个模板。
您可以在Excel模板中添加注释:
- 单元格以
#
开始注释整行内容。 - 如果单元格中填写了资源类型,则在此单元格中换行显示的其他内容也作为注释。
步骤一:编辑源模板文件
您可以按照Excel模板语法编辑模板文件,也可以访问EcsInstance.xlsx,下载Excel模板文件示例。
本文示例中,Excel模板中填写了第2列和第3列内容,转换后将生成2个模板。
步骤二:转换模板
执行以下命令,将Excel模板转换为ROS模板,并在当前目录生成template-{number}.json
。
说明
{number}
取值为整数,从0开始依次递增。例如:template-0.json
代表第2列填写的模板,template-1.json
代表第3列填写的模板。
rostran transform templates/excel/EcsInstance.xlsx --target-path tests/template.json
步骤三:查看转换后的ROS模板
本示例中,共生成template-0.json
和template-1.json
两个模板文件,具体如下:
template-0.json
{ "ROSTemplateFormatVersion": "2015-09-01", "Parameters": { "ZoneId": { "Type": "String", "Default": "cn-beijing-h" }, "SystemDiskSize": { "Type": "Number", "Default": 100 } }, "Resources": { "MyInstance": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "RegionId": "cn-beijing", "ZoneId": "cn-beijing-h", "ChargeType": "PostPaid", "InstanceType": "ecs.g5.large", "Amount": 200, "SystemDiskCategory": "cloud_efficiency", "SystemDiskSize": 100, "DiskMappings": [{ "Category": "cloud_ssd", "Size": 200 }], "ImageId": "EasyShopLinux2019****", "Password": "pass****", "VpcId": { "Ref": "MyVpc" }, "VSwitchId": { "Ref": "MyVSwitch" }, "InternetMaxBandwidthOut": 0, "SecurityGroupId": "sg-2zej2g9ep36k3yhh****" } }, "MyVpc": { "Type": "ALIYUN::ECS::Vpc", "Properties": { "VpcName": "MyVpcName" } }, "MyVSwitch": { "Type": "ALIYUN::ECS::VSwitch", "Properties": { "VpcId": { "Ref": "MyVpc" }, "ZoneId": "cn-beijing-h", "VSwitchName": "MyVSwitchName" } } } }
template-1.json
{ "ROSTemplateFormatVersion": "2015-09-01", "Parameters": { "ZoneId": { "Type": "String" }, "SystemDiskSize": { "Type": "Number" } }, "Resources": { "MyInstance": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "RegionId": "cn-beijing", "ZoneId": { "Ref": "ZoneId" }, "ChargeType": "PostPaid", "InstanceType": "ecs.r5.6xlarge", "Amount": 50, "SystemDiskCategory": "cloud_ssd", "SystemDiskSize": 100, "DiskMappings": [{ "Category": "cloud_ssd", "Size": 200 }], "ImageId": "EasyShopLinux2019****", "Password": "password", "VpcId": "vpc-bp1397wjfjjzlck86****", "VSwitchId": "vsw-bp1apypxlcxdao9w7****", "InternetMaxBandwidthOut": 0, "SecurityGroupId": "sg-2zej2g9ep36k3yhh****" } } } }