跨賬號跨地域?qū)嵗僮飨到y(tǒng)補(bǔ)丁修復(fù)
背景
對于規(guī)模比較大的企業(yè),不同部門的ECS實(shí)例可能會(huì)分布在多個(gè)賬號中。多個(gè)賬號中ECS實(shí)例的補(bǔ)丁的集中管理成為擺在企業(yè)資產(chǎn)管理者面前的重要問題。本文將介紹如何通過補(bǔ)丁管理功能跨賬號跨地域的集中修復(fù)ECS實(shí)例操作系統(tǒng)補(bǔ)丁。
實(shí)現(xiàn)原理
在跨賬號補(bǔ)丁修復(fù)的場景中,阿里云賬號分為兩個(gè)角色。
管理賬號
資源賬號
其中資源賬號可以有一個(gè)或者多個(gè),管理賬號本身也可以是一個(gè)資源賬號。
通過在所有資源賬號下創(chuàng)建管理賬號可以扮演的RAM角色的方式,授權(quán)補(bǔ)丁修復(fù)所需要的相關(guān)權(quán)限。從而可以達(dá)到在管理賬號內(nèi)跨賬號跨地域集中修復(fù)補(bǔ)丁的效果。
前置條件
如果需要設(shè)置自定義的補(bǔ)丁基線,可以通過 ALIYUN::OOS::PatchBaseline 或者 Terraform 統(tǒng)一管理所有資源賬號下的自定義補(bǔ)丁基線。
操作步驟
在資源賬號中創(chuàng)建RAM角色
需要在所有資源賬號中都創(chuàng)建用于補(bǔ)丁管理的RAM角色,并授權(quán)管理賬號扮演。步驟如下:
單擊選擇自動(dòng)化任務(wù)>公共任務(wù)模板,選擇 創(chuàng)建角色并授予自定義權(quán)限策略。
單擊 創(chuàng)建執(zhí)行。
單擊下一步: 設(shè)置參數(shù)。
新建角色名稱。可自定義角色名稱,例如 PatchRole。
角色信任的云賬號。填寫管理賬號的阿里云ID,默認(rèn) {{ ACS::AccountId }} 是授權(quán)給本賬號。
新建并授予的自定義權(quán)限策略名稱。可自定義權(quán)限策略名稱,例如 PatchPolicy。
授權(quán)的自定義權(quán)限策略腳本。復(fù)制下方代碼填入。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInvocationResults", "ecs:DescribeInstances", "ecs:RunCommand", "ecs:RebootInstance", "ecs:DescribeCloudAssistantStatus", "ecs:DescribeInvocations" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oos:ListInstancePatchStates" ], "Resource": "*", "Effect": "Allow" } ] }
單擊確定,單擊創(chuàng)建執(zhí)行,等待執(zhí)行完成。
補(bǔ)丁修復(fù)
使用附錄中的模板創(chuàng)建跨賬號執(zhí)行模板來跨賬號跨地域補(bǔ)丁修復(fù)。
執(zhí)行模板。
accountRoleAndRegions。分別在資源賬號下上海和北京地域運(yùn)行補(bǔ)丁修復(fù)操作。
[ { "OOSAssumeRole": "|${資源賬號uid}/PatchRole", "RegionId": "cn-shanghai" }, { "OOSAssumeRole": "|${資源賬號uid}/PatchRole", "RegionId": "cn-beijing" } ]
templateName。選擇ACS-ECS-BulkyApplyPatchBaseline。
templateParameters。模板參數(shù)參考《立即修復(fù)》,可以如下設(shè)置。
{ "regionId": "{{ regionId }}", "targets": { "Type": "All", "RegionId": "{{ regionId }}", "Parameters": { "RegionId": "{{ regionId }}", "Status": "Running" } }, "action": "install", "rebootIfNeed": true, "rateControl": { "Mode": "Concurrency", "MaxErrors": 0, "Concurrency": 10 }, "OOSAssumeRole": "", "timeout": 86400 }
單擊 確定,單擊 創(chuàng)建執(zhí)行。
創(chuàng)建執(zhí)行成功后,您可單擊該執(zhí)行的詳情,查看執(zhí)行日志,實(shí)時(shí)了解執(zhí)行的進(jìn)度和狀態(tài)。
附錄
跨賬號跨地域執(zhí)行模板:
FormatVersion: OOS-2019-06-01
Description:
en: Multi account to execute specified template
zh-cn: 跨賬號執(zhí)行指定模板
name-en: MultiAccountToExecuteTemplate
name-zh-cn: 跨賬號執(zhí)行指定模板
Parameters:
accountRoleAndRegions:
Type: Json
templateName:
Type: String
AssociationProperty: TemplateName
templateParameters:
Description:
en: Template paremeters to execute with.
zh-cn: 觸發(fā)執(zhí)行模板的參數(shù)。
Type: Json
AssociationProperty: TemplateParameter
AssociationPropertyMetadata:
TemplateName: $templateName
rateControl:
Description:
en: Concurrency ratio of task execution.
zh-cn: 任務(wù)執(zhí)行的并發(fā)比率。
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 0
Concurrency: 10
OOSAssumeRole:
Description:
en: The RAM role to be assumed by OOS.
zh-cn: OOS扮演的RAM角色。
Type: String
Default: OOSServiceRole
RamRole: '{{ OOSAssumeRole }}'
Tasks:
- Name: executeTemplate
Action: 'ACS::Template'
Description:
en: Execute template.
zh-cn: 執(zhí)行模板。
Properties:
TemplateName: '{{ templateName }}'
Parameters:
'Fn::MergeMap':
- '{{ templateParameters }}'
- regionId:
'Fn::Select':
- RegionId
- '{{ACS::TaskLoopItem}}'
- OOSAssumeRole:
'Fn::Select':
- OOSAssumeRole
- '{{ACS::TaskLoopItem}}'
Loop:
RateControl: '{{ rateControl }}'
Items: '{{ accountRoleAndRegions }}'