开发者社区> 问答> 正文

如何进行更改集管理?

资源编排如何进行更改集管理?

展开
收起
小天使爱美 2020-03-24 17:30:22 575 0
1 条回答
写回答
取消 提交回答
  • 当您需要更新正在运行的资源栈时,可以使用更改集功能。您可以预览更改对资源栈正在运行资源造成的影响,只有在您执行更改集时,ROS才会对您的资源栈进行更改,您可以使用ROS控制台、ALIYUN CLI或ROS API来创建和管理更改集。

    使用限制 更改集的使用限制如下: 一个资源栈最多同时存在20个更改集。 更改集只显示资源栈变化,不显示资源栈是否成功更新。 更改集不检查是否将超出账户限制、是否将更新不支持更新的资源、是否权限不足而无法修改资源,所有这些都将导致资源栈更新失败。如果更新失败,ROS将尝试将您的资源回滚到原始状态。 更新资源栈流程 使用更改集更新资源栈的流程如下: 通过为您待更新的资源栈提交更改来创建更改集。您可以提交修改后的资源栈模板或者修改后的输入参数值,ROS将您的资源栈与所提交更改进行对比,生成更改集。 查看更改集了解将更改资源栈设置和资源。例如,您可以查看ROS将添加、修改或删除的资源。 (可选)如果您在执行更改前,需要其他更改,则请创建其他更改集。创建多个更改集可帮助您了解和评估不同的更改对您的资源造成的影响。您还可以删除其他更改集,以免误执行不应该应用的更改集。 执行您需要应用到资源栈的更改集。 注意 在您执行更改集后,ROS将自动删除与资源栈关联的所有更改集,因为他们不再适用于更新后的资源栈。 资源栈开始更新,待更新完成后,您可以查看资源栈更新结果。 相关功能 更改集的相关功能如下表所示。 功能 说明 创建更改集 当您需要为正在运行的资源栈创建更改集时,请通过本操作修改模板或模板参数。 查看更改集 创建更改集之后,您可以查看更改记录和JSON格式的更改详细列表。 执行更改集 当您创建更改集后,只有成功执行更改集,对资源栈的更新才能生效。 删除更改集 当您不需要新建的更改集时,请及时删除,以免误执行,导致资源栈更改。

    当您需要为正在运行的资源栈创建更改集时,请通过本操作修改模板或模板参数。ROS通过将资源栈与您提交的模板更改结果进行对比来生成更改集。

    前提条件 请确保您已创建资源栈,操作方法请参见创建资源栈。 创建更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称对应的右侧操作栏中的创建更改集。 您也可以单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集,单击创建更改集。 在创建更改集向导的选择模板页面,根据所需选择模板,单击下一步。 创建更改集 - 选择模板 在创建更改集向导的配置模板参数页面,配置更改集名称和模板参数,单击下一步。 创建更改集 - 配置模板参数 在创建更改集向导的配置更改集页面,配置资源栈策略、失败时回滚和超时设置,单击下一步。 创建更改集 - 配置更改集 在创建更改集向导的确认页面,单击创建更改集。 如果您需要确认更新配置,则可以单击下一步,确认配置无误后,再单击确认修改,完成更新资源栈操作。创建更改集 - 确认 查看资源栈更改集。 在资源栈列表中,单击资源栈名称下的ID。 在资源栈管理页面,单击更改集。 您可以查看更改集的名称、资源状态和执行状态等。更改集 - 列表 查看更改集详情。更改集 - 详情 创建更改集 (ALIYUN CLI) 通过命令aliyun ros CreateChangeSet创建更改集。

    您可以通过命令选项的形式指定新参数值或修改参数,并提交模板更改。例如,为资源栈创建名为test-change-set的更改集,更改集使用当前资源栈模板(oss://ros-templates/test-change-set.json?RegionId=cn-hangzhou),样例如下:

    aliyun ros CreateChangeSet --TemplateURL oss://ros-templates/test-change-set.json?RegionId=cn-hangzhou --Sta

    创建更改集之后,您可以查看更改记录和JSON格式的更改详细列表。

    前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 查看更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集,查看资源栈的更改集的列表。 单击目标更改集名称。 在更改集详情页面,您可以查看更改集的基本信息、更改记录、模板及JSON更改。 更改记录和JSON更改为您展示模板变更内容。如果您需要对模板执行其他更改,则请创建其他更改集。

    更改集详情 查看更改集 (ALIYUN CLI) 执行命令aliyun ros ListChangeSets查看更改集所属资源栈ID。 查看更改集的资源栈ID,样例如下: aliyun ros ListChangeSets --StackId <stack_id> --RegionId <region_id> ROS返回更改集所属资源栈信息列表如下: { "TotalCount": 1, "PageSize": 10, "RequestId": "A94A31B7-EC3A-4528-90D8-FA31FA4D13BB", "PageNumber": 1, "ChangeSets": [ { "Status": "CREATE_COMPLETE", "ChangeSetId": "<change_set_id>", "ExecutionStatus": "AVAILABLE", "CreateTime": "2020-03-03T06:36:20", "ChangeSetType": "UPDATE", "RegionId": "cn-hangzhou", "ChangeSetName": "test-change-set", "StackName": "test-change-set", "StackId": "<stack_id>" } ] } 执行命令aliyun ros GetChangeSet查看更改集ID。 查看更改集ID,样例如下: aliyun ros ListChangeSets --StackId <stack_id> --RegionId <region_id> aliyun ros GetChangeSet --ChangeSetId <change_set_id> --RegionId <region_id> ROS返回更改集信息列表如下: { "ExecutionStatus": "AVAILABLE", "Parameters": [ { "ParameterValue": "<account_id>", "ParameterKey": "ALIYUN::AccountId" }, { "ParameterValue": "None", "ParameterKey": "ALIYUN::NoValue" }, { "ParameterValue": "cn-hangzhou", "ParameterKey": "ALIYUN::Region" }, { "ParameterValue": "<stack_id>", "ParameterKey": "ALIYUN::StackId" }, { "ParameterValue": "test-change-set", "ParameterKey": "ALIYUN::StackName" }, { "ParameterValue": "<tenant_id>", "ParameterKey": "ALIYUN::TenantId" }, { "ParameterValue": "1", "ParameterKey": "Count" } ], "TimeoutInMinutes": 60, "Changes": [ { "Type": "Resource", "ResourceChange": { "LogicalResourceId": "WaitConditionHandle", "Replacement": "False", "PhysicalResourceId": "WaitConditionHandle", "ResourceType": "ALIYUN::ROS::WaitConditionHandle", "Action": "Modify", "Details": [ { "Evaluation": "Static", "Target": { "Name": "Count", "RequiresRecreation": "Never", "Attribute": "Properties" }, "CausingEntity": "Count", "ChangeSource": "ParameterReference" }, { "Evaluation": "Dynamic", "Target": { "Name": "Count", "RequiresRecreation": "Never", "Attribute": "Properties" }, "ChangeSource": "DirectModification" } ], "Scope": [ "Properties" ] } } ], "ChangeSetId": "<change_set_id>", "StackId": "<stack_id>", "DisableRollback": false, "ChangeSetName": "test-change-set", "ChangeSetType": "UPDATE", "StackName": "test-change-set", "Status": "CREATE_COMPLETE", "CreateTime": "2020-03-03T06:36:20", "RegionId": "cn-hangzhou", "RequestId": "DB9B48C8-C22D-4009-A3B0-85FDF3D26D2D" } Changes属性列出对资源的更改,配置方法请参见数据结构。

    当您创建更改集后,只有成功执行更改集,对资源栈的更新才能生效。

    前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 背景信息 注意 您执行更改集之后,ROS将自动删除与资源栈关联的其他更改集,因为他们对于更新后的资源栈失效。如果资源栈更新失败,则您需要重新创建更改集。 如果您在有资源栈策略的资源栈上执行更改集,则ROS将在更新资源栈时强制执行策略。执行更改集时,您不能指定覆盖现有策略的临时资源栈策略。要更新受保护的资源,您必须更新资源栈策略或者使用直接更新方法。

    执行更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集。 在更改集页面,单击更改集名称对应操作列的执行,ROS立即开始更新资源栈。 更改集 - 列表 (可选)单击更改集名称,在更改集管理页面,单击执行更改集,ROS立即开始更新资源栈。 更改集 - 详情 执行更改集 (ALIYUN CLI) 通过命令aliyun ros ExecuteChangeSet执行更改集。

    指定您需要执行更改集的ID,样例如下:

    aliyun ros ExecuteChangeSet --ChangeSetId <change_set_id> --RegionId <region_id> 执行本命令之后,ROS开始更新资源栈。如果您需要查看更新资源栈的进度,请使用执行命令aliyun ros GetStack。

    当您不需要新建的更改集时,请及时删除,以免误执行,导致资源栈更改。除非您删除更改集,否则ROS将保留所有更改集,直到您更新资源栈为止。

    前提条件 请确保您已创建更改集,操作方法请参见创建更改集。 删除更改集(控制台) 登录资源编排控制台。 在左侧导航栏选择资源栈。 单击资源栈名称下面的资源栈ID,在资源栈管理页面,选择更改集。 在更改集页面,单击更改集名称对应操作列的删除。 更改集 - 列表 (可选)单击更改集名称,在更改集管理页面,单击删除。 更改集 - 详情 删除更改集 (ALIYUN CLI) 通过命令aliyun ros DeleteChangeSet删除更改集。

    指定您要删除的更改集的ID,样例如下:

    aliyun ros DeleteChangeSet --ChangeSetId <change_set_id> --RegionId <region_id>

    ROS支持通过API接口和ALIYUN CLI方式创建更改集来创建资源栈,在您执行更改集之前可对资源栈进行检查和修改。对于您新创建的资源栈,只有在执行更改集成功后,才能成为有效的资源栈。

    创建资源栈(API接口) ROS支持通过API接口CreateChangeSet为新资源栈创建更改集,支持通过API接口PreviewStack预览资源栈的配置结果。

    通过创建更改集方式创建的资源栈,状态处于核对中(REVIEW_IN_PROGRESS)。该状态下的资源栈,不能创建新更改集。如果您确认后发现资源栈配置不符合要求,则可以直接删除资源栈,并重新为新资源栈创建更改集。

    创建资源栈(ALIYUN CLI) 通过命令aliyun ros CreateChangeSet创建资源栈。

    通过创建更改集创建资源栈时,您需要指定更改集类型为CREATE,并指定资源栈名称、模板、参数和更改集名称。例如,创建资源栈test-create-change-set,更改集体test-create-change-set。

    aliyun ros CreateChangeSet --ChangeSetType CREATE --TemplateURL oss://ros-templates/test-change-set.json?RegionId=c

    介绍更改集Changes的数据结构。

    Change 参数 类型 描述 ResourceChange ResourceChange结构体。 ROS将执行的资源和操作。 Type 字符串。 更改的实体类型。目前只支持Resource。 取值:Resource。

    ResourceChange 参数 类型 描述 Action 字符串。 ROS对资源执行的操作。取值范围: Add:创建资源 Modify:修改资源 Remove:释放资源 Details ResourceChangeDetail数组。 ROS对资源修改的详情。只有当Action为Modify时,才显示该字段。 LogicalResourceId 字符串。 资源逻辑ID,即模板中定义的资源名称。 PhysicalResourceId 字符串。 资源的物理ID。当Action为Add时,由于资源未创建,无有物理ID。 Replacement 字符串。 当Action为Modify时,ROS是否将通过创建新资源并删除旧资源来替换资源。 此值取决于ResourceTargetDefinition结构中RequiresRecreation属性的值。 例如: 如果RequiresRecreation字段为Always,Evaluation字段为Static,则Replacement为True。 如果RequiresRecreation字段为Always,Evaluation字段为Dynamic,则Replacement为Conditionally。 如果RequiresRecreation有多个更改值,则Replacement值取决于影响最大的更改,Always、Conditionally、Never影响递减。

    取值范围: True False Conditional ResourceType 字符串。 ROS资源类型。 Scope 字符串数组。 当Action为Modify时,触发更新的字段。取值范围: Properties Metadata DeletionPolicy ResourceChangeDetail 参数 类型 描述 ChangeSource 字符串。 触发修改的原因。取值范围: ResourceReference:引用了其他资源的物理ID,引用的资源物理ID可能发生了变化。 ParameterReference:引用的参数发生了变化。 ResourceAttribute:引用了其他资源的输出属性,引用资源的输出属性可能发生了变化。 DirectModification:直接修改了模板。 Automatic:嵌套资源栈(ALIYUN::ROS::Stack)如果未进行修改,则ROS会将其ChangeSet设置为Automatic,因为嵌套资源栈中指定的模板可能已经发生了更改。在您对父资源栈运行更新之前,ROS不会对嵌套资源栈模板进行更改。 System:虽然某些资源的输入未发生变化,但是特定的条件或内部机制也会触发更新,例如:ALIYUN::ROS::WaitConditionHandle。 CausingEntity 字符串。 ChangeSource关联的对象。对应关系如下: ResourceReference:资源名。 ParameterReference:参数名。 ResourceAttribute:资源名.参数名。 DirectModification:null。 Automatic:资源名。 System:资源名。 Evaluation 字符串。 ROS是否可以确定目标值,以及在执行更改集之前目标值是否将更改。取值范围: Static 当取值为Static时,ROS可以确定目标值及其值将改变。

    Dynamic 当取值为Dynamic时,无法确定目标值。因为更新资源栈时,目标值取决于内部函数的结果,例如:Ref或Fn::GetAtt。

    Target ResourceTargetDefinition结构体。 描述触发更新的字段的具体信息。 ResourceTargetDefinition 参数 类型 描述 Attribute 字符串。 指定触发更新字段。取值范围: Properties Metadata DeletionPolicy Name 字符串。 当Attribute为Properties时,表示具体的属性名,其他情况为null。 RequiresRecreation 字符串。 当Attribute为Properties时,表示对此属性的更改是否导致重新创建资源。取值范围: Never Conditionally Always

    2020-03-24 17:53:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《用管控策略设定多账号组织全局访问边界》 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载