资源编排ROS之模块:实现模板代码复用(基础篇)

背景

资源编排服务(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎将根据模板自动完成所有资源的创建和配置,实现自动化部署及运维。

模块是一种以透明、易管理和可重复的方式打包资源配置,以便跨资源栈模板实现包含的方法。模块可以将常见服务配置和最佳实践封装为模块化、可自定义的构建基块,供您包含在资源栈模板中。

例如:网络领域专家可以创建一个包含遵守安全准则的内置安全组和入口、出口规则的模块。然后您可以将该模块纳入到模板中,以便在资源栈中预配置安全的网络基础架构,而无需花费时间了解清楚VPC、子网、安全组和网关的工作方式。此外,由于模块具有版本控制,如果安全指南随时间而发生变化,模块创建者可以创建包含这些更改的新版本模块。

模块简介

模块特点

  • 可预测性:模块必须在ROS中创建后才能使用,您将模块纳入到模板中时,可以了解该模块能解析到哪些资源。
  • 可重用性:您可以在多个模板和账号中使用同一模块。
  • 可追溯性:ROS会跟踪资源栈中的哪些资源是从模块创建而成的。资源栈的资源、偏差、更改集中包含相关信息。
  • 可管理性:创建模块后,您可以通过ROS对其进行管理,例如版本控制。

模块分类

  • 公共模块:公共模块是资源编排为您提供的可直接使用的模块。更多信息,请参见查看公共模块

  • 自定义模块:自定义模块是通过控制台手动创建的模块。更多信息,请参见管理自定义模块

    • 共享模块是一种特殊的自定义模块。其他用户可以查看和使用您的共享模块,但无法修改和删除它。

使用示例

下方示例会把安全组的定义封装在一个模块里,然后在创建资源栈使用这个模块。

创建模块

登录资源编排控制台。在左侧导航栏,选择资源 > 我的模块。在我的模块页面,单击创建模块。

在创建模块页面,输入下方内容。

这个模块包含一个安全组的定义。

模块编写方式与模板基本一致,更多信息可参见模块开发

yaml 复制代码
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下创建了一个安全组。

模块使用方式与资源基本一致,更多信息可参见使用模块

yaml 复制代码
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

单击下一步。单击创建。查看资源栈。

相关推荐
用户6120414922139 分钟前
C语言做的区块链模拟系统(极简版)
c语言·后端·敏捷开发
Mintopia18 分钟前
🎬《Next 全栈 CRUD 的百老汇》
前端·后端·next.js
CF14年老兵1 小时前
深入浅出 Python 一等函数:一份友好的全面解析
后端·python·trae
whitepure1 小时前
万字详解常用数据结构(Java版)
java·数据结构·后端
天天摸鱼的java工程师1 小时前
你们公司的 QPS 是怎么统计出来的?这 5 种常见方法我踩过一半的坑
java·后端·面试
guojl1 小时前
Gateway使用手册
后端·微服务
BingoGo1 小时前
PHP 内存管理 深入理解 PHP 的引用和垃圾回收
后端·php
whitepure1 小时前
万字详解常用算法(Java版)
java·后端·算法
程序员NEO1 小时前
Spring 调试新姿势:一眼看清运行时,用 Spring Debugger 少踩 90% 坑
后端
莹莹啦1 小时前
聊一聊Java定时任务框架选型
java·后端