通過ROS的資源棧組,您可以在多個阿里雲帳號下的多地區建立相同配置的ECS執行個體。
方案概述
本方案介紹如何使用ROS資源棧組(StackGroup)在多個阿里雲帳號的多個地區同時建立相同配置的ECS執行個體及其依賴的網路資源(VPC、交換器、安全性群組)。適用於集團企業多帳號統一部署、全球化業務多地區擴充、多環境(開發/測試/生產)標準化基礎設施等情境。
前提條件
根據選擇的許可權模式,需要完成不同的準備工作:
服務系統管理權限模式(推薦多帳號情境):
阿里雲帳號:擁有阿里雲帳號,且已開通ROS和ECS產品。
資來源目錄:已建立資來源目錄(Resource Directory),目標帳號已加入資來源目錄。
委派管理員帳號:已設定ROS的委派管理員帳號。詳情請參見設定委派管理員帳號。
自助系統管理權限模式:
阿里雲帳號:擁有阿里雲帳號,且已開通ROS和ECS產品。
管理員帳號和目標帳號:已建立管理員帳號和多個目標帳號。
RAM角色和信任關係:在管理員帳號和每個目標帳號中手動建立RAM角色,建立雙向信任關係。詳情請參見授予自助系統管理權限。
操作教程
步驟一:準備ROS模板
以下模板通過DATASOURCE自動查詢推薦的執行個體規格,在目標地區建立完整的ECS環境(VPC + vSwitch + 安全性群組 + ECS 執行個體):
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 自動選擇執行個體規格,建立一台ECS執行個體及網路資源
en: Creates one ECS instance with an auto-selected instance type
Resources:
# 資料來源:查詢當前地區推薦的執行個體規格(2核8G + ESSD雲端硬碟)
DS-InstanceTypes:
Type: DATASOURCE::ECS::RecommendInstanceTypes
Properties:
Cores: 2
Memory: 8
SystemDiskCategory: cloud_essd
# 建立VPC
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
# 建立交換器(可用性區域由DATASOURCE自動確定)
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VpcId:
Ref: Vpc
CidrBlock: 192.168.0.0/24
ZoneId:
Fn::Jq:
- First
- .[].ZoneId
- Fn::GetAtt:
- DS-InstanceTypes
- InstanceTypes
# 建立安全性群組
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Ref: Vpc
# 建立ECS執行個體(執行個體規格由DATASOURCE自動確定)
Instance:
Type: ALIYUN::ECS::Instance
Properties:
IoOptimized: optimized
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: SecurityGroup
VSwitchId:
Ref: VSwitch
ImageId: centos
InstanceType:
Fn::Jq:
- First
- .[].InstanceType
- Fn::GetAtt:
- DS-InstanceTypes
- InstanceTypes
SystemDiskCategory: cloud_essd
Outputs:
VpcId:
Label:
zh-cn: VPC執行個體ID
Value:
Fn::GetAtt:
- Vpc
- VpcId
InstanceId:
Label:
zh-cn: ECS執行個體ID
Value:
Fn::GetAtt:
- Instance
- InstanceId關鍵文法解析
DATASOURCE資料來源資源
DS-InstanceTypes: Type: DATASOURCE::ECS::RecommendInstanceTypes # DATASOURCE:: 首碼表示資料來源 Properties: Cores: 2 # vCPU核心數 Memory: 8 # 記憶體(GB) SystemDiskCategory: cloud_essd # 系統硬碟類型DATASOURCE類型的資源不建立實際雲資源,而是查詢已有資源或推薦配置。返回結果通過
Fn::GetAtt擷取。本例中返回的InstanceTypes屬性是一個數組:[ {"InstanceType": "ecs.g7.large", "ZoneId": "cn-hangzhou-h", ...}, {"InstanceType": "ecs.g6.large", "ZoneId": "cn-hangzhou-i", ...} ]Fn::Jq資料提取函數
ZoneId: Fn::Jq: - First # 模式:First=取第一個結果,All=取所有結果 - .[].ZoneId # JQ運算式:遍曆數組,提取每個元素的ZoneId - Fn::GetAtt: # 資料來源:DATASOURCE查詢結果 - DS-InstanceTypes - InstanceTypesFn::Jq使用JQ文法從複雜JSON結構中提取資料。First模式取第一個匹配結果作為字串返回。Fn::Jq參數含義
本例中的值
第1個參數
結果模式
First(取第一個匹配值)第2個參數
JQ過濾運算式
.[].ZoneId(提取所有元素的ZoneId)第3個參數
輸入資料
DATASOURCE返回的
InstanceTypes數組
步驟二:建立資源棧組
在左側導覽列,單擊资源栈组。
在頂部功能表列選擇地區(此地區為資源棧組的管理地區,不影響實際部署地區)。
單擊创建资源栈组。
步驟三:配置資源棧組
在配置资源栈组頁面,設定权限。
若選擇自助管理權限,需按照頁面要求配置管理员角色和执行角色;若選擇服務管理權限,資源棧組將會自動建立所需角色,無需進行配置。完成配置後,請單擊下一步。
步驟四:配置模板和參數
在選擇模板頁面,點擊選擇已有模板,模板錄入方式為輸入模板,粘貼步驟一的YAML模板,然後單擊下一步。
在配置參數頁面,輸入资源栈组名称和资源栈组描述,然後單擊下一步。
說明本模板無需配置額外參數(執行個體規格和可用性區域由DATASOURCE自動確定),直接單擊下一步即可。
步驟五:設定部署選項
在设置部署选项頁面,配置項會根據步驟三:配置資源棧組時選擇的权限模式發生變化。
使用服務系統管理權限時:
配置項
操作
部署目標
在資來源目錄中選擇多個成員帳號或組織單元。
自動部署
啟用後,新增帳號時,自動部署資源棧到該帳號;刪除帳號時,具體行為由賬號刪除行為決定。禁用後則不再自動處理。
賬號刪除行為
自動部署啟用時生效,可設定帳號從資源夾中刪除時,是否刪除該帳號下的資源棧。
使用自助系統管理權限時:
配置項
操作
部署位置
選擇在賬號中部署資源棧。
帳號
輸入多個目標帳號ID,以半形逗號分隔。
配置地區與部署選項。
參數
說明
建議值
地區
選擇要部署ECS執行個體的目標地區(最多20個)。
根據業務需要選擇。
最大並發帳號數
同時部署的帳號數量
預設1(可提高以加速部署)
容錯
允許的最大失敗數,超過後停止
根據部署規模設定
地區並發
地區間是否並行部署
並行(加速部署)
說明部署矩陣樣本(3個帳號 × 4個地區 = 12個資源棧執行個體):
華東1(杭州) 華北2(北京) 華南1(深圳) 中國香港 帳號A(12345…) 執行個體1 執行個體2 執行個體3 執行個體4 帳號B(67890…) 執行個體5 執行個體6 執行個體7 執行個體8 帳號C(11111…) 執行個體9 執行個體10 執行個體11 執行個體12每個執行個體包含:VPC + VSwitch + SecurityGroup + ECS Instance(共4個資源)
單擊下一步,在檢查並確認頁面核對資訊,然後單擊建立資源棧組。
步驟六:查看部署結果
在左側導覽列,單擊資源棧組,然後單擊目標資源棧組名稱。
單擊實例頁簽,按帳號和地區查看資源棧執行個體。
列
說明
資源棧實例所屬賬號
資源棧執行個體所屬的目標帳號。
資源棧實例地域
資源棧執行個體所在的地區。
資源棧ID
各執行個體的獨立資源棧標識。
实例状态
最新:資源棧執行個體是最新的,即該執行個體沒有進行中中的或者失敗的操作。
已到期:資源棧執行個體不是最新的,即該執行個體最新一次的操作未完成或失敗。例如:更新資源棧組及資源棧執行個體時,更新中的資源棧執行個體狀態為已到期。建立或更新資源棧執行個體時,角色扮演失敗,建立或更新資源棧未執行,資源棧執行個體狀態為已到期。建立或更新資源棧執行個體時,角色扮演成功,建立或更新資源棧失敗,資源棧執行個體狀態為已到期。
單擊某個資源棧ID,在資源頁簽查看該執行個體建立的所有資源(VPC、VSwitch、SecurityGroup、Instance)。
當所有執行個體的資源狀態為建立成功時,表示多帳號多地區ECS部署完成。
常見問題
DATASOURCE資源會產生費用嗎?
不會。DATASOURCE類型的資源只執行查詢操作,不建立實際雲資源,不產生任何費用。它類似於API查詢調用,在資源棧建立過程中自動執行。
如果某個地區沒有滿足條件的執行個體規格怎麼辦?
DATASOURCE查詢返回空結果時,後續依賴該結果的資源(VSwitch和Instance)會建立失敗。該地區的資源棧執行個體狀態變為失敗,但不影響其他地區的部署。
解決方案:
調整DATASOURCE的查詢條件(如降低Cores和Memory要求)
在部署選項中排除不支援的地區
多個地區的ECS執行個體使用相同的私網IP(192.168.0.1)會衝突嗎?
不會衝突。每個地區/帳號的資源棧執行個體建立的是獨立的VPC,私網IP在各自的VPC內有效。不同VPC之間的私網IP互相隔離,即使使用相同的網段和IP地址也不會衝突。
可以修改模板中的ECS配置(如vCPU核心數、記憶體大小)嗎?
可以。修改DATASOURCE中的Cores和Memory屬性即可。例如需要4核16G的執行個體:
DS-InstanceTypes:
Type: DATASOURCE::ECS::RecommendInstanceTypes
Properties:
Cores: 4
Memory: 16
SystemDiskCategory: cloud_essdDATASOURCE會自動查詢各地區滿足新條件的推薦規格,無需手動指定執行個體規格名稱。
想要瞭解更多資源部署問題,可以查詢常見問題。