资源编排ROS之更改集

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

背景

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

当您需要更新资源栈时,在实施之前了解您的更改会如何影响正在运行的资源可以帮助您充满自信地更新资源栈。使用更改集,您可以预览提议对资源栈进行的更改可能会对正在运行的资源造成什么影响,例如,您的更改是否会删除或替换任何关键资源,只有在您决定执行更改集时,ROS 才会对您的资源栈进行更改,这让您可以决定是否继续执行提议的更改,还是通过创建另一个更改集来探索其他更改。您可以使用 ROS 控制台、ALIYUN CLI 或 ROS API 来创建和管理更改集。

关于更改集的更多功能介绍,可以参考这里

功能介绍

更新资源栈

使用更改集更新资源栈,与直接更新资源栈的最大区别是多了一个审核变更的过程。

如下图所示,用户有一个资源栈,里面有三个资源:三角、圆、方块。用户更新资源栈时,想知道资源栈到底会发生哪些变更,于是创建了一个更改集。通过查看更改集的内容,发现三角和圆发生了变化,颜色由白变橘,方块没有发生变化。如果用户觉得符合预期,就可以执行更改集,资源栈就会开始更新。用户如果觉得不符合预期,可以调整模板或参数后,重新创建更改集,直至符合预期。

不使用更改集的更新流程中,用户在执行更新之前,并不知道资源栈会发生何种变化。这可能会导致一些误操作,如意外更新或删除了某些资源。一种避免误操作的方法是使用资源栈策略,防止意外更新,这是一种防御措施。主动的办法是使用更改集,预览变更内容,一切尽在掌控。当然两者也可以结合在一起使用。

创建资源栈

更改集不仅可以用来更新资源栈,也可以用来创建资源栈。用来创建资源栈时,可以预览会创建出哪些资源。目前只有API和CLI支持该功能,控制台不支持该功能。更推荐的做法是使用资源栈预览功能,对应的API接口是PreviewStack,控制台、API和CLI均支持。

示例

创建更改集

我们使用如下模板在ROS控制台创建一个资源栈。这个资源栈包含三个资源:Handle1、Handle2、Handle3。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  Handle1:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 0
  Handle2:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 1
  Handle3:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 2

为这个资源栈创建更改集,目的把Handle1的Count修改为100,删除Handle3,增加一个新资源Handle4。

在选择模板,使用如下模板。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  Handle1:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 100
  Handle2:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 1
  Handle4:
    Type: 'ALIYUN::ROS::WaitConditionHandle'
    Properties:
      Count: 3

按照导航指引,完成剩下的配置,创建更改集。

审核变更

选择更改集,查看详情。

查看变更摘要。

查看变更详情。

变更详情

下在是JSON更改的具体内容。Changes中的每一项对应于一个资源的变更。

在ResourceChange结构中,Action表示变更类型:

  • Add:创建。
  • Remove:删除。
  • Modfiy:修改。

可以看到Handle3资源会被删除,Handle4资源会被创建,而Handle1和Handle2资源发生了修改。

Handle1资源发生修改是因为我们修改了Count属性,在更改集中ResourceChange.Details部分也有显示。

Handle2资源并没有发生修改,为什么会出现在更改集中。ResourceChange.Details.ChangeSource为System,是因为ALIYUN::ROS::WaitConditionHandle比较特殊,根据特定的条件或内部机制也会触发更新,一般的资源不存在这个情况。

关于变更详情的细节可以参见更改集数据结构

{
  "Changes": [
    {
      "Type": "Resource",
      "ResourceChange": {
        "Action": "Modify",
        "LogicalResourceId": "Handle2",
        "Details": [
          {
            "Evaluation": "Dynamic",
            "Target": {
              "RequiresRecreation": "Never",
              "Attribute": "Properties"
            },
            "ChangeSource": "System"
          }
        ],
        "Scope": [
          "Properties"
        ],
        "PhysicalResourceId": "Handle2",
        "ResourceType": "ALIYUN::ROS::WaitConditionHandle",
        "Replacement": "False"
      }
    },
    {
      "Type": "Resource",
      "ResourceChange": {
        "Action": "Modify",
        "LogicalResourceId": "Handle1",
        "Details": [
          {
            "Evaluation": "Static",
            "Target": {
              "RequiresRecreation": "Never",
              "Attribute": "Properties",
              "Name": "Count"
            },
            "ChangeSource": "DirectModification"
          }
        ],
        "Scope": [
          "Properties"
        ],
        "PhysicalResourceId": "Handle1",
        "ResourceType": "ALIYUN::ROS::WaitConditionHandle",
        "Replacement": "False"
      }
    },
    {
      "Type": "Resource",
      "ResourceChange": {
        "Action": "Add",
        "LogicalResourceId": "Handle4",
        "Details": [],
        "Scope": [],
        "ResourceType": "ALIYUN::ROS::WaitConditionHandle"
      }
    },
    {
      "Type": "Resource",
      "ResourceChange": {
        "Action": "Remove",
        "LogicalResourceId": "Handle3",
        "Details": [],
        "Scope": [],
        "PhysicalResourceId": "Handle3",
        "ResourceType": "ALIYUN::ROS::WaitConditionHandle"
      }
    }
  ]
}

执行更改集

确认变更详情,如果不符合要求,可以创建新的更改集直到符合要求。如果已经符合要求,可以直接执行更改集。

执行完成后,观察资源列表,符合预期。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
弹性计算 运维 关系型数据库
云上部署环境(基础设施)的正确姿势——使用资源编排ROS进行基础设施的部署
![image.png](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/66daa0b176da97de1dc8e66580fc0384.png) # 常见的部署问题 1. 多环境部署。根据实际开发的需要,一般至少需要准备3个环境:日常测试环境,部署预发环境,部署生产环境。 2. 多地域部署。对于云产品还需要支持多地域部署
1707 0
|
30天前
|
弹性计算 运维 安全
资源编排ROS之模块:实现模板代码复用(基础篇)
ROS是阿里云的资源管理服务,通过模板定义和编排引擎自动化部署云资源。模块是可预测、重用、追溯和管理的资源集合,分为公共和自定义类型。它们简化了复杂配置,如安全组,可在多个模板和账号中复用。创建模块后,可在资源栈中引用,实现标准化部署。
51 1
|
6月前
|
弹性计算 运维 持续交付
基于资源编排服务(ROS)实现存量资源的IaC化
如果您需要一种简单而有效的方法来管理大量云资源并实现自动化部署,推荐使用阿里云的资源编排服务ROS(Resource Orchestration Service)。ROS能够将存量资源转化为IaC(基础设施即代码),通过资源场景创建、模版生成和资源栈导入等功能,实现资源的统一管理和自动化部署。这不仅提高了资源管理的效率,还降低了成本。如果您想了解如何更轻松地管理云资源并加速部署流程,ROS是一个值得深入了解的工具。
79 1
|
7月前
|
弹性计算 JSON 运维
使用ROS CDK进行资源编排
ROS CDK(Cloud Development Toolkit)是ROS推出的代码开发工具,帮助您使用少量代码实现复杂模板的资源编排效果。
70 0
|
存储 弹性计算 运维
资源编排ROS之资源场景
# 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循ROS定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如ECS实例、RDS数据库实例)、资源间的依赖关系等。ROS的编排引擎
208 0
资源编排ROS之资源场景
|
移动开发 自然语言处理 运维
使用资源编排ROS一键批量开通阿里云产品
## 背景 如果你使用过阿里云的云产品/服务,你会发现其中有不少需要手动点击“开通”。比如初次使用 SLS 日志服务时,就会进入下面的界面: ![sls-enable-service.jpg](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/561d3fc5d9805e79a62a41a9094019c3.jpg) 作为个人用户,以手
1687 0
使用资源编排ROS一键批量开通阿里云产品
|
存储 JSON 弹性计算
减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
以“基础设施即代码”的理念代替“重复劳动”。
20310 0
减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
|
弹性计算 关系型数据库 RDS
资源编排服务(ROS)简介
ROS模板库:https://github.com/aliyun/ros-templates/tree/master/ResourceTemplates
1354 0
资源编排服务(ROS)简介
|
弹性计算 运维 关系型数据库
资源编排ROS之资源栈组StackGroup
## 背景 [资源编排服务](https://help.aliyun.com/document_detail/28852.html)(Resource Orchestration Service, 简称 ROS)是阿里云提供的一项简化云计算资源管理的服务。您可以遵循 ROS 定义的模板规范编写资源栈模板,在模板中定义所需的云计算资源(例如 ECS 实例、RDS 数据库实例)、资源间的依赖关系
891 0
|
1月前
|
网络协议 机器人 中间件
单片机和FreeRTOS上跑机器人ROS的应用
单片机和FreeRTOS上跑机器人ROS的应用
51 0

推荐镜像

更多