本文以創建一組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****" } } } }