基於OOS批量修改資源標籤值

場景

當資源上有個標籤鍵: 部門,標籤值:零售,因爲部門資源整合要把標籤(鍵: 部門,值:零售)修改成標籤(鍵: 部門,值:新零售),如何快速批量修改標籤呢?html

背景信息

運維編排服務OOS經過模板定義您須要編排的運維任務。模板內容支持YAML和JSON兩種格式,模版分爲公共模版和自定義模版兩種類型。爲了方便您快速使用OOS,OOS提供了公共模板供您直接使用和參考。。在使用模板前您須要仔細審查模板所要執行的運維任務,並優先在測試環境觀察使用效果。redis

您也能夠編寫自定義模板來編寫您所須要的運維任務。更多詳情,請參見模板結構。本文中的TagResourcesFilterByTags是自定義模板運維

操做步驟

登陸ECS管理控制檯
在左側導航欄,選擇 運維與監控 > 運維編排
在頂部狀態欄處,選擇地域
選擇 個人模板 點擊 建立模版
選擇JSON
如下示例是針對ecs實例及redis實例進行標籤值的更新
operateId : 操做ID,區分每次操做使用
tagKey:標籤鍵,用來過濾資源
tagValue:標籤值,用來過濾資源
tagKey:標籤鍵,要修改目標標籤鍵
newTagValue:新標籤值,要修改後的標籤值oop

{
    "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": {}
}

建立執行:測試

執行詳情:spa

當執行狀態顯示成功,表示運維任務已完成。
當執行狀態顯示失敗,您能夠單擊操做列下的詳情查看執行日誌,並根據日誌信息分析和調整執行內容。3d

能夠根據本文的代碼修改成本身須要的cases。日誌

相關文檔

標記您的 RDS 資源
標記您的 SLB 資源
標記您的 ECS 資源
如何檢查您的資源是否具備您指定的標籤?
基於標籤批量管理資源
支持標籤產品及其文檔
標籤的最佳實踐
經過OOS基於標籤批量啓動ECS實例實踐
如何使用標籤控制對ECS 資源的訪問?
使用標籤檢索資源
建立資源標籤分組設置
ECS全局標籤實踐
ECS控制檯雲資源分組管理---全局標籤code


本文做者:洛小蒙 orm

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載

相關文章
相關標籤/搜索