资源编排ROS之资源栈组StackGroup

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: ## 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称 ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系

背景

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

随着基础设施的发展,账号对跨多个账号和地域创建、更新或删除堆栈有了越来越强烈的诉求。在资源编排服务推出资源栈组功能之前,账号只能通过手动或代码调用的方式依次在不同的账号和地域下创建资源栈。而使用资源栈组功能,账号则可以通过使用管理员账号定义和管理 ROS 模板,并将模板用作在指定地域的所选目标账号中预置堆栈的基础。从而对多个账号和地域下的堆栈进行统一的管理,简化工作流程和维护成本。

功能介绍

资源栈组

通过资源栈组,可使用一个 ROS 模板在多个阿里云账号跨地域创建资源栈。每个资源栈中包含的所有资源由资源栈组的 ROS 模板定义。在创建资源栈组时,可指定要使用的模板以及模板所需的任何参数和功能。

在定义资源栈组后,可以在指定的目标账号地域中创建、更新或删除资源栈。在这个操作过程中,还可以指定操作首选项。比如,可以指定对资源栈并行执行操作的账号的数量、执行操作的地域的顺序和容错能力 (一旦超出它,资源栈操作就会停止) 。

资源栈组和地域相关,这也就意味着您在一个地域(如 cn-hangzhou)中创建了资源栈组,只能在该地域进行查看或更改。

资源栈实例

资源栈实例是对特定地域内的目标账号中的资源栈的引用。一个资源栈实例对应一个资源栈,但也可能出现资源栈实例存在而所对应的资源栈不存在的情况。例如,由于某些原因无法创建资源栈,则资源栈实例将显示资源栈创建失败的原因。一个资源栈实例只属于一个资源栈组。

下图显示资源栈组、资源栈操作和资源栈之间的逻辑关系。当更新资源栈组时,将在所有账号和地域中更新所有关联的资源栈实例。

堆栈集操作.png

账号

和资源栈组相关的账号有两类:

  • 管理员账号 —— 用来创建资源栈组的阿里云账号。登录管理员账号后,可创建资源栈组,以及资源栈组中的资源栈实例。每个资源栈实例所对应的资源栈均是创建在目标账号的特定地域中。
  • 目标账号 —— 用来创建、更新或删除资源栈组中的一个或多个资源栈的账号。必须先在管理员账号与目标账号之间设置信任关系,然后才能使用资源栈组在目标账号中创建资源栈。管理员账号同时也可以是目标账号

资源栈组、资源栈实例、资源栈、地域和账号的关系图

关系图.png

  • 资源栈组是区分地域的,所以在杭州地域创建的资源栈组,无法在北京地域看到。
  • 资源栈组是由管理员账号(比如账号 A)创建的,可以在资源栈组中创建多个资源栈实例,创建资源栈实例时可以指定账号和地域。如上图所示,账号 A 创建的资源栈组中,在杭州地域给账号 B、C 分别创建资源栈实例 1、2,在北京地域给账号 C 创建资源栈实例 3。这就是资源栈组的跨账号跨地域特性。
  • 资源栈实例是对资源栈的引用。

    • 创建资源栈实例时会相应的创建出资源栈。
    • 删除资源栈实例时可选择删除或保留它所指向的资源栈。
    • 直接删除资源栈则不会删除资源栈实例。

资源栈组和资源栈实例操作

创建资源栈组

创建资源栈组时,指定要用于创建资源栈的 ROS 模板、资源栈的目标账号以及资源栈所需部署的目标账号和特定地域等内容,可确保将具有相同配置的相同资源栈资源一致部署到多个指定地域内的多个指定目标账号

更新资源栈组

更新资源栈组时,可更新模板、地域等内容,资源编排服务会将更改推送到资源栈组中的资源栈。若更新了资源栈组中的模板,会更新所有关联的资源栈。可以通过如下方式更新资源栈组:

  • 更新资源栈组中的模板,比如新增参数、删除一个资源等。
  • 替换资源栈中的模板。
  • 跨现有或其他地域在现有或其他目标账号中添加资源栈,即在资源栈组中新增资源栈实例。

删除资源栈组

当资源栈组中的资源栈实例均被删除后,可删除资源栈组。

添加资源栈实例

在资源栈组中,可通过指定目标账号和地域来添加资源栈实例。

删除资源栈实例

删除资源栈实例时,将从指定的地域内的指定目标账号中删除资源栈及其所有关联资源。可以通过以下方法删除资源栈实例:

  • 删除特定目标账号的资源栈实例及其对应资源栈,同时使其他目标账号中的其他资源栈保持运行。
  • 删除特定地域的资源栈实例及其资源栈,同时使其他地域中的资源栈保持运行。
  • 删除资源栈实例,但保留其所对应的资源栈,使该资源栈独立于资源栈组继续运行。

使用场景

多地域部署

管理员账号 A 可以在其使用的所有地域同时进行部署,如账号 A 可以同时部署北京,杭州,深圳等多个地域。这尤其适合 On ECS 的产品,因为 On ECS 的产品几乎都是需要部署所有地域。

多地域部署.png

多账号部署

有多个不同目标账号 A(同时也是管理员账号)、B、C(非 RAM 账号)。管理员账号 A 控制着目标账号 A、B、C 的部署。

多账号部署.png

多账号和多地域部署

跨账号跨地域,即上面两个场景的组合。关系图见“资源栈组、资源栈实例、资源栈、地域和账号的关系图”。

使用示例

假设我们要在两个账号的杭州、北京地域下创建 ECS 集群,那么通过资源栈组可以这么做:

  • 满足先决条件(在第一次使用资源栈组前需要操作)
  • 准备一个创建 ECS 集群的模板
  • 创建资源栈组

先决条件(在第一次使用资源栈组前需要操作)

资源编排服务通过角色扮演对资源栈组中的资源栈实例所对应的资源栈进行部署。在使用资源栈组前,需要赋予资源编排服务必要的权限、以及准备好对应角色。

管理员账号创建 AliyunROSStackGroupAdministrationRole,并授权给 ROS 服务

  • 登录管理员账号,并访问 RAM 角色管理,点击新建RAM角色按钮,在右侧弹出框中选择阿里云服务
    image.png
  • 点击下一步,输入角色名称 AliyunROSStackGroupAdministrationRole,选择授信服务为 资源编排服务,完成角色创建:
    image.png

管理员账号为 AliyunROSStackGroupAdministrationRole 创建允许角色扮演策略

  • 登录管理员账号,并访问 RAM 权限策略管理,点击新建权限策略按钮,在窗口中输入策略名称为AssumeRole-AliyunROSStackGroupExecutionRole,选择配置模式为脚本配置,在策略内容里输入如下策略(该策略的意思为允许AliyunROSStackGroupAdministrationRole角色身份扮演为AliyunStackGroupExecutionRole角色身份):
    image.png
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "acs:ram::*:role/AliyunStackGroupExecutionRole"
    }
  ],
  "Version": "1"
}

image.png

目标账号创建 AliyunROSStackGroupExecutionRole ,并授权给管理员账号

  • 登录目标账号,并访问 RAM 角色管理,点击新建RAM角色按钮,在右侧弹出框中选择阿里云账号
    image.png
  • 点击下一步,输入角色名称 AliyunROSStackGroupExecutionRole,选择选择云账号为 管理员账号的ID,完成角色创建:
    image.png

目标账号角色指定权限

  • 为目标账号的 AliyunROSStackGroupExecutionRole 角色指定权限,资源栈组在该目标账号下创建资源栈时会使用该权限(比如 AdministratorAccess
    image.png

准备模板

我们需要创建一个 VPC、VSwitch、安全组和 ECS 实例,则有如下模板(如果对 ROS 模板语法不熟悉,请查看官方文档):

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "InstanceType": {
      "Type": "String",
      "Default": "ecs.g6.large"
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "CidrBlock": "192.168.0.0/24",
        "VpcId": {
          "Ref": "Vpc"
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        }
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "VpcId": {
          "Ref": "Vpc"
        }
      }
    },
    "InstanceGroup": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Properties": {
        "MaxAmount": 2,
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "ImageId": "centos_7",
        "VpcId": {
          "Ref": "Vpc"
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        }
      }
    }
  },
  "Outputs": {
    "InstanceIds": {
      "Value": {
        "Fn::GetAtt": ["InstanceGroup", "InstanceIds"]
      }
    }
  }
}

创建资源栈组

  • 登录管理员账号,访问 ROS 资源栈组界面,点击创建资源栈组,在创建界面中输入模板:
    image.png
  • 点击下一步,输入资源栈组名称,还可以指定资源栈组描述模板参数
    image.png
  • 选择并确认管理员角色执行角色,也就是我们在先决条件中创建的供资源栈组使用的默认角色:
    image.png
  • 输入目标账号(多个以英文,分隔),选择目标地域,选填部署选项
    image.png
  • 确认无误后点击创建资源栈组
  • 资源栈组列表中找到所创建的资源栈组,点击以查看详情
    image.png
  • 可以看到在两个目标账号和两个目标地域下共计创建了 4 个资源栈实例以及资源栈,每个资源栈下都有 VPC、VSwitch、安全组和 ECS 实例:
    image.png

image.png

总结

通过 ROS 的资源栈组功能,您可以轻松快速地进行跨账号以及跨地域。资源栈组将这些资源栈集中在一起进行管理,不仅是在创建过程中能做到快速部署,在后期的维护操作上也能够做到方便快捷的管理。比如,当您更新模板后,只需更新资源栈组,即可将该资源栈组内的所有资源栈均更新到最新状态。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
1月前
|
弹性计算 运维 安全
资源编排ROS之模块:实现模板代码复用(基础篇)
ROS是阿里云的资源管理服务,通过模板定义和编排引擎自动化部署云资源。模块是可预测、重用、追溯和管理的资源集合,分为公共和自定义类型。它们简化了复杂配置,如安全组,可在多个模板和账号中复用。创建模块后,可在资源栈中引用,实现标准化部署。
51 1
|
5月前
|
存储 Serverless 对象存储
通过计算巢轻松部署ROS自定义资源
阿里云资源编排服务ROS可以帮助您简化云计算资源的管理。 通过编写和使用模板,ROS可以实现自动化部署和运维。ROS不仅能够编排阿里云资源,还支持自定义资源。 使用自定义资源,您可以在模板中编写自定义配置逻辑。 计算巢“ROS自定义资源”服务可以把GitHub代码仓库(Python语言)构建和部署为ROS自定义资源,并输出ROS模块,方便后续使用。
141 1
|
6月前
|
弹性计算 运维 持续交付
基于资源编排服务(ROS)实现存量资源的IaC化
如果您需要一种简单而有效的方法来管理大量云资源并实现自动化部署,推荐使用阿里云的资源编排服务ROS(Resource Orchestration Service)。ROS能够将存量资源转化为IaC(基础设施即代码),通过资源场景创建、模版生成和资源栈导入等功能,实现资源的统一管理和自动化部署。这不仅提高了资源管理的效率,还降低了成本。如果您想了解如何更轻松地管理云资源并加速部署流程,ROS是一个值得深入了解的工具。
79 1
|
7月前
|
运维
使用资源编排为云资源批量绑定标签
本场景介绍利用资源编排服务ROS(Resource Orchestration Service)在资源栈中创建资源,并同时为资源绑定标签,提升运维效率。
100 0
|
7月前
|
弹性计算 JSON 运维
使用ROS CDK进行资源编排
ROS CDK(Cloud Development Toolkit)是ROS推出的代码开发工具,帮助您使用少量代码实现复杂模板的资源编排效果。
70 0
|
弹性计算 开发者
ROS-更新资源栈|学习笔记
快速学习 ROS-更新资源栈
81 0
ROS-更新资源栈|学习笔记
|
弹性计算 关系型数据库 数据库
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库
本文介绍如何通过ROS部署ECS+RDS+SqlServer资源,以及如何通过PowerShell操作SqlServer数据库。 注意:附录模板和截图中的commandtext部分仅为演示作用,请根据需求修改后使用。
114 0
使用ROS部署ECS+SqlServer资源并通过PowerShell操作数据库
|
存储 弹性计算 运维
资源编排ROS之资源场景
# 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎
209 0
资源编排ROS之资源场景
|
弹性计算 JSON JavaScript
ROS CDK | 云上资源自动化部署新模式
使用 ROS CDK 自动化部署云资源
1100 0
|
移动开发 自然语言处理 运维
使用资源编排ROS一键批量开通阿里云产品
## 背景 如果你使用过阿里云的云产品/服务,你会发现其中有不少需要手动点击“开通”。比如初次使用 SLS 日志服务时,就会进入下面的界面: ![sls-enable-service.jpg](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/561d3fc5d9805e79a62a41a9094019c3.jpg) 作为个人用户,以手
1688 0
使用资源编排ROS一键批量开通阿里云产品

推荐镜像

更多