场景
当资源上有个标签键: 部门,标签值:零售,由于部门资源整合要把标签(键: 部门,值:零售)修改为标签(键: 部门,值:新零售),如何快速批量修改标签呢?
背景信息
运维编排服务OOS通过模板定义您需要编排的运维任务。模板内容支持YAML和JSON两种格式,模版分为公共模版和自定义模版两种类型。为了方便您快速使用OOS,OOS提供了公共模板供您直接使用和参考。。在使用模板前您需要仔细审查模板所要执行的运维任务,并优先在测试环境观察使用效果。
您也可以编写自定义模板来编写您所需要的运维任务。更多详情,请参见模板结构。本文中的TagResourcesFilterByTags是自定义模板
操作步骤
登录ECS管理控制台。
在左侧导航栏,选择 运维与监控 > 运维编排。
在顶部状态栏处,选择地域。
选择 我的模板 点击 创建模版
选择JSON
以下示例是针对ecs实例及redis实例进行标签值的更新
operateId : 操作ID,区分每次操作使用
tagKey:标签键,用来过滤资源
tagValue:标签值,用来过滤资源
tagKey:标签键,要修改目标标签键
newTagValue:新标签值,要修改后的标签值
{ "Description": "根据标签查找资源并更新标签", "FormatVersion": "OOS-2019-06-01", "Parameters": { "operateId": { "Description": "操作ID,调用者自定义", "Type": "String", "MinLength": 1, "MaxLength": 64 }, "tagKey": { "Description": "当前key", "Type": "String", "MinLength": 1, "MaxLength": 64 }, "tagValue": { "Description": "当前value", "Type": "String", "MinLength": 1, "MaxLength": 64 }, "newTagValue": { "Description": "更新后value", "Type": "String", "MinLength": 1, "MaxLength": 64 } }, "Tasks": [ { "Name": "DescribeInstances_ECS", "Action": "ACS::ExecuteAPI", "Description": { "zh-cn": "通过标签过滤ECS实例", "en": "filter ecs instances by tags" }, "Properties": { "Service": "ECS", "API": "DescribeInstances", "AutoPaging": true, "Parameters": { "Tags": [ { "Key": "{{ tagKey }}", "Value": "{{ tagValue }}" } ] } }, "Outputs": { "Instances": { "Type": "List", "ValueSelector": "Instances.Instance[].InstanceId" } } }, { "Name": "TagResources_ECS_Instances", "Action": "ACS::ExecuteAPI", "Description": { "zh-cn": "更新ECS实例标签", "en": "tag ecs instances" }, "Properties": { "Service": "ECS", "API": "TagResources", "Parameters": { "Tags": [ { "Key": "{{ tagKey }}", "Value": "{{ newTagValue }}" } ], "ResourceType": "Instance", "ResourceIds": [ "{{ACS::TaskLoopItem}}" ] } }, "Loop": { "MaxErrors": "100%", "Concurrency": 20, "Items": "{{DescribeInstances_ECS.Instances}}" } }, { "OnError": "ACS::NEXT", "Name": "DescribeInstances_REDIS", "Action": "ACS::ExecuteApi", "Description": { "zh-cn": "通过标签过滤REDIS实例", "en": "filter redis(kvstore) instances by tags" }, "Properties": { "Service": "R-kvstore", "API": "DescribeInstances", "AutoPaging": true, "Parameters": { "Tags": [ { "Key": "{{ tagKey }}", "Value": "{{ tagValue }}" } ] } }, "Outputs": { "Instances": { "Type": "List", "ValueSelector": "Instances.KVStoreInstance[].InstanceId" } } }, { "Name": "TagResources_REDIS_Instances", "Action": "ACS::ExecuteAPI", "Description": { "zh-cn": "更新REDIS实例标签", "en": "tag redis instances" }, "Properties": { "Service": "R-kvstore", "API": "TagResources", "Parameters": { "Tags": [ { "Key": "{{ tagKey }}", "Value": "{{ newTagValue }}" } ], "ResourceType": "Instance", "ResourceIds": [ "{{ACS::TaskLoopItem}}" ] } }, "Loop": { "MaxErrors": "100%", "Concurrency": 20, "Items": "{{DescribeInstances_REDIS.Instances}}" } } ], "Outputs": {}}
创建执行:
执行详情:
当执行状态显示成功,表示运维任务已完成。
当执行状态显示失败,您可以单击操作列下的详情查看执行日志,并根据日志信息分析和调整执行内容。
可以根据本文的代码修改为自己需要的cases。
作者:洛小蒙
本文为云栖社区原创内容,未经允许不得转载。