资源编排ROS之模块:实现模板代码复用(基础篇)
背景
资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。
模块是一种以透明、易管理和可重复的方式打包资源配置,以便跨资源栈模板实现包含的方法。模块可以将常见服务配置和最佳实践封装为模块化、可自定义的构建基块,供您包含在资源栈模板中。
例如:网络领域专家可以创建一个包含遵守安全准则的内置安全组和入口、出口规则的模块。然后您可以将该模块纳入到模板中,以便在资源栈中预配置安全的网络基础架构,而无需花费时间了解清楚VPC、子网、安全组和网关的工作方式。此外,由于模块具有版本控制,如果安全指南随时间而发生变化,模块创建者可以创建包含这些更改的新版本模块。
模块简介
模块特点
-
可预测性:模块必须在ROS中创建后才能使用,您将模块纳入到模板中时,可以了解该模块能解析到哪些资源。
-
可重用性:您可以在多个模板和账号中使用同一模块。
-
可追溯性:ROS会跟踪资源栈中的哪些资源是从模块创建而成的。资源栈的资源、偏差、更改集中包含相关信息。
-
可管理性:创建模块后,您可以通过ROS对其进行管理,例如版本控制。
模块分类
-
-
共享模块是一种特殊的自定义模块。其他用户可以查看和使用您的共享模块,但无法修改和删除它。
-
使用示例
下方示例会把安全组的定义封装在一个模块里,然后在创建资源栈使用这个模块。
创建模块
登录资源编排控制台。在左侧导航栏,选择资源 > 我的模块。在我的模块页面,单击创建模块。
在创建模块页面,输入下方内容。
这个模块包含一个安全组的定义。
模块编写方式与模板基本一致,更多信息可参见模块开发。
ROSTemplateFormatVersion: '2015-09-01'
Description: 全网安全组配置
Parameters:
SecurityGroupName:
Type: String
VpcId:
Type: String
Resources:
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupIngress:
- PortRange: 22/22
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
- PortRange: 80/80
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
- PortRange: 443/443
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
- PortRange: 3389/3389
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
- PortRange: '-1/-1'
SourceCidrIp: 0.0.0.0/0
IpProtocol: icmp
SecurityGroupName:
Ref: SecurityGroupName
SecurityGroupType: normal
VpcId:
Ref: VpcId
在创建模块页面右上角,选择导入/保存模块 > 保存为新模块。在保存为新模块对话框,输入模块名称和模块描述。单击确定。
在我的模块页面查看模块。
使用模块创建资源栈
在左侧导航栏,单击资源栈。在资源栈列表页面,单击创建资源栈,然后在下拉列表中选择使用ROS。
在创建资源栈页面,输入下方内容。
这个模板创建了一个VPC,并使用刚才创建的模块在这个VPC下创建了一个安全组。
模块使用方式与资源基本一致,更多信息可参见使用模块。
ROSTemplateFormatVersion: "2015-09-01"
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName: "test-vpc"
CidrBlock: 192.168.0.0/24
Sg:
Type: MODULE::MyOrg::MyApp::SecurityGroup
Version: v1
Properties:
SecurityGroupName: "test-sg"
VpcId:
Ref: Vpc
Outputs:
VpcId:
Value:
Ref: Vpc
SecurityGroupId:
Value:
Ref: Sg.SecurityGroup
单击下一步。单击创建。查看资源栈。