使用Count功能批量创建资源
1. 编写ROS模板
背景说明
ALIYUN::VPC::EIP类型用于申请弹性公网IP(EIP)。如果需要申请多个弹性公网IP,则需要在模板中编写多个ALIYUN::VPC::EIP资源,这样模板会变得冗长。此时您可以使用Count功能批量创建资源。Count功能详情,请参见Count。此外,使用Count批量创建多组资源时可以通过为资源指定DependsOn并设置参数(ParallelCount)进行资源创建的并发控制。
编写ROS模版
您可以使用Count功能编写模板,创建以下资源:
1个VPC(专有网络)
1个vSwitch(交换机)
1个SecurityGroup(安全组)
4个ECS(按量付费的ECS)
4个EIP(弹性公网IP)
模板说明
当Count取值为4,会创建4个EIP资源。使用Count功能时,ParallelCount取值为2,此时会分两批创建4个EIP资源。通过ROS的预处理,会生成名为Eip[0]和Eip[1](第一批)、Eip[2]和Eip[3](第二批)的4个EIP资源。
当Count取值为4,ParallelCount取值为2,会创建4个EipBind资源,通过ALIYUN::Index伪参数逐一绑定ECS实例和EIP,此时会分两批创建4个EipBind资源。通过ROS的预处理,会生成名为EipBind[0]和EipBind[1](第一批)、EipBind[2]和EipBind[3](第二批)的4个资源。ALIYUN::Index在Count中使用,在预处理时会被替换为相应的数值。本示例中将逐一绑定ECS实例与EIP,即第1个实例绑定Eip[0]、第2个实例绑定Eip[1]、第3个实例绑定Eip[2]、第4个实例绑定Eip[3]。
当Count取值为4。将ALIYUN::ECS::InstanceGroup的MaxAmount指定为Count,取值为4,会创建4台ECS实例。
说明:请注意本模版创建的资源均属于付费云产品资源,请您体验完成后及时释放,避免造成资产浪费。
{ "ROSTemplateFormatVersion": "2015-09-01", "Parameters": { "Count": { "Type": "Number", "Default": 4 }, "ZoneId": { "Type": "String" }, "InstanceType": { "Type": "String", "Default": "ecs.c6.large" }, "Password": { "Type": "String", "Default": "Abc1****", "NoEcho": true }, "ParallelCount": { "Type": "Number", "Default": 2 }, "SystemDiskCategory": { "Type": "String" } }, "Metadata": { "ALIYUN::ROS::Interface": { "ParameterGroups": [ { "Parameters": [ "Count", "ZoneId", "InstanceType", "Password", "ParallelCount", "SystemDiskCategory" ], "Label": { "default": { "zh-cn": "基础配置", "en": "Basic Configuration" } } } ], "TemplateTags": [ "acs:example:云起实验室:使用Count功能批量创建资源" ] } }, "Resources": { "Vpc": { "Type": "ALIYUN::ECS::VPC", "Properties": { "CidrBlock": "10.0.0.0/8", "VpcName": "test-resource-count" } }, "VSwitch": { "Type": "ALIYUN::ECS::VSwitch", "Properties": { "CidrBlock": "10.0.10.0/24", "ZoneId": { "Ref": "ZoneId" }, "VpcId": { "Ref": "Vpc" } } }, "SecurityGroup": { "Type": "ALIYUN::ECS::SecurityGroup", "Properties": { "SecurityGroupName": "test-resource-count", "VpcId": { "Ref": "Vpc" } } }, "Eip": { "Type": "ALIYUN::VPC::EIP", "Count": { "Ref": "Count" }, "DependsOn": { "Fn::Select": [ { "Fn::Calculate": [ "1-{0}//{1}", 0, [ { "Fn::Min": [ { "Ref": "ALIYUN::Index" }, { "Ref": "ParallelCount" } ] }, { "Ref": "ParallelCount" } ] ] }, [ { "Fn::Replace": [ { "index": { "Fn::Calculate": [ "{0}-{1}", 0, [ { "Ref": "ALIYUN::Index" }, { "Ref": "ParallelCount" } ] ] } }, "Eip[index]" ] } ] ] }, "Properties": { "Bandwidth": 5 } }, "Servers": { "Type": "ALIYUN::ECS::InstanceGroup", "Properties": { "ImageId": "centos_7", "InstanceType": { "Ref": "InstanceType" }, "VpcId": { "Ref": "Vpc" }, "VSwitchId": { "Ref": "VSwitch" }, "SecurityGroupId": { "Ref": "SecurityGroup" }, "Password": { "Ref": "Password" }, "AllocatePublicIP": false, "MaxAmount": { "Ref": "Count" }, "SystemDiskCategory": { "Ref": "SystemDiskCategory" } } }, "EipBind": { "Type": "ALIYUN::VPC::EIPAssociation", "Count": { "Ref": "Count" }, "DependsOn": { "Fn::Select": [ { "Fn::Calculate": [ "1-{0}//{1}", 0, [ { "Fn::Min": [ { "Ref": "ALIYUN::Index" }, { "Ref": "ParallelCount" } ] }, { "Ref": "ParallelCount" } ] ] }, [ { "Fn::Replace": [ { "index": { "Fn::Calculate": [ "{0}-{1}", 0, [ { "Ref": "ALIYUN::Index" }, { "Ref": "ParallelCount" } ] ] } }, "EipBind[index]" ] } ] ] }, "Properties": { "InstanceId": { "Fn::Select": [ { "Ref": "ALIYUN::Index" }, { "Fn::GetAtt": [ "Servers", "InstanceIds" ] } ] }, "AllocationId": { "Fn::Select": [ { "Ref": "ALIYUN::Index" }, { "Ref": "Eip" } ] } } } }, "Outputs": { "InstanceIds": { "Value": { "Fn::GetAtt": [ "Servers", "InstanceIds" ] } }, "AllocationIds": { "Value": { "Ref": "Eip" } }, "EipAddresses": { "Value": { "Fn::GetAtt": [ "Eip", "EipAddress" ] } } } }
2. 创建资源栈
以下操作需登录阿里云账号,在资源编排控制台完成以下操作流程。
访问资源编排控制台
1. 进入资源编排控制台。
访问资源栈页面
2. 在资源编排控制台左侧导航栏中单机资源栈。
选择资源创建地域
3. 在页面左上角的地域下拉列表,选择资源栈的所在地域(例如:华北2:北京)。
创建资源栈
4. 在资源栈列表页面,单击创建资源栈,然后在下拉列表中选择使用新资源(标准)。
输入模板
5. 在选择模板页面,选择已有模板:选择输入模板方式,然后将上述示例模板内容复制到模板内容输入框内。然后单击下一步。
模板参数配置
6. 在配置模板参数页面,配置资源栈名称及其余参数,然后单击下一步。
资源栈参数说明
资源栈信息配置
配置项 |
说明 |
资源栈策略 |
取值:
关于资源栈策略的更多信息,请参见资源栈策略。 |
失败时回滚 |
取值:
|
超时设置 |
如果所有资源的创建或更新没有在该时间内完成,系统将自动回滚到创建或更新之前的状态。 取值范围:10~1440。 单位:分钟。 |
删除保护 |
防止资源栈被意外删除。取值:
|
RAM角色 |
您可以创建可信实体为资源编排服务的RAM角色,然后根据ROS模板中资源所需最小权限为RAM角色授权。
|
标签 |
由一对键值对组成,方便您对资源栈进行分类。 您可以单击添加,然后在编辑标签绑定对话框设置标签键和标签值,最后单击确定。 |
资源组 |
您可以选择资源栈所在的资源组。如果不指定资源组,资源栈将加入默认资源组。 关于如何创建资源组,请参见创建资源组。 |
创建资源栈
7. 在检查并确认页面,单击创建。
3. 查看资源栈
本步骤将指导您在完成创建资源栈操作后,如何查询资源栈详情。
1. 进入资源编排控制台。
2. 在左侧导航栏单击资源栈。
3. 在页面左上角的地域下拉列表,选择资源栈的所在地域。
4. 在资源栈列表页面,找到需要查看的资源栈,单击资源栈名称列的资源栈ID。
查看资源栈资源
5. 单击资源页签,查看资源栈创建涉及到的资源。
说明:本场景创建的云产品资源涉及扣费,体验完成后为避免资产浪费,请您及时释放。您可以点击资源列表下的EcsInstance栏中的ECS实例ID,即可跳转至ECS控制台查看本次创建的ECS资源信息。
4. 释放资源栈
本步骤将指导您如何释放通过资源编排控制台创建资源内容。
进入资源栈列表
1. 在资源栈列表页面,找到您创建的资源栈,单击操作列下的删除。
选择资源栈删除方式并删除
2. 在删除资源栈对话框中,删除方式选择释放资源,单击确定。
实验链接:https://developer.aliyun.com/adc/scenario/c98b50eb66ab4e03b5df44d13150cb0c