本篇文章1589字,读完约4分钟
阿里云国际站经销商,主营阿里云,腾讯云,华为云,亚马逊aws,谷歌云gcp,微软云az,免费开户,代充值优惠大,联系客服飞机@jkkddd
使用云服务器ECS连接云数据库RDS完成数据初始化
本文以使用云服务器ECS连接云数据库RDS完成数据初始化为例,由简入难地向您介绍如何编辑ROS模板。前提条件
请您提前了解模板语法和结构。更多信息,请参见模板快速入门。
场景示例
在阿里云专有网络中创建ECS实例和RDS实例,并在云服务器ECS中获取数据库的连接信息,从而完成数据初始化。
使用须知
您可以访问对应的资源类型查看属性详情。具体操作,请参见查看资源类型。
资源类型为每个属性定义了类型、是否必须、是否允许更新等信息。如果为必须,则要求必须在模板Resources的Properties中声明该属性;反之,则为非必须。如果为允许更新,则可以在新模板中修改该属性,然后使用修改后的模板更新资源栈以达到更新云资源属性的目的;反之,则不允许更新。
编辑模板
您可以通过资源类型索引文档查找所需的资源类型。更多信息,请参见资源类型索引。
例如:当前场景中需要创建专有网络(ALIYUN::ECS::VPC)、ECS实例(ALIYUN::ECS::Instance)、RDS实例(ALIYUN::RDS::DBInstance),还需要创建ECS实例所使用的交换机(ALIYUN::ECS::VSwitch)、安全组(ALIYUN::ECS::SecurityGroup)和执行数据初始化命令的ECS云助手(ALIYUN::ECS::RunCommand)。
根据以上信息,您可以在模板中定义需要创建的资源(Resources)。
定义模板资源及其依赖关系
定义基础网络资源
您可以通过模板定义基础网络资源Vpc、VSwitch和EcsSecurityGroup。
使用Ref与伪参数ALIYUN::StackName获取资源栈名称作为资源属性的属性值,例如Vpc中的VpcName和VSwitch中的VSwitchName。更多信息,请参见Ref和ALIYUN::StackName。
使用Fn::Select与Fn::GetAZs函数结合伪参数ALIYUN::Region获取资源栈所在地域的第一个可用区ID,例如VSwitch中的ZoneId。更多信息,请参见函数(Functions)和ALIYUN::Region。
定义数据库资源
您可以通过模板定义数据库资源DBInstance和DBAccount。
使用Fn::GetAtt函数获取资源输出属性值,例如DBAccount中的DBInstanceId。更多信息,请参见Fn::GetAtt。
定义云服务器ECS资源
您可以通过模板定义云服务器ECS资源EcsInstance和InstanceRunCommand。
使用Fn::Sub函数拼接命令操作字符串,例如InstanceRunCommand中的CommandContent。更多信息,请参见Fn::Sub。
添加模板参数分组与动态获取参数配置
在以上模板中完成了对多种资源及其依赖关系的定义,其中EcsInstance资源的InstanceType、SystemDiskCategory属性值与DBInstance资源的DBInstanceClass属性值为固定值,当您在不同地域创建资源栈时,需要多次调整模板结构和变更资源属性以达到部署资源栈的目的。
您可以对模板添加参数Parameters,从而提高模板的灵活性和可复用性。
添加模板参数分组
您可以在模板中使用元数据(Metadata)对Parameters中定义的参数进行分组,并定义参数分组标签。
您可以根据不同资源以及资源对应的参数进行分组。以当前模板为例,您可以将资源按照如下结果划分。