在ECS實(shí)例中自動(dòng)執(zhí)行腳本
本教程介紹如何使用彈性伸縮生命周期掛鉤掛起ECS實(shí)例,并結(jié)合系統(tǒng)運(yùn)維管理 OOS(CloudOps Orchestration Service)的模板,實(shí)現(xiàn)擴(kuò)縮容時(shí)在ECS實(shí)例中自動(dòng)執(zhí)行腳本。
前提條件
已創(chuàng)建伸縮組,并且伸縮組處于啟用狀態(tài)。
已準(zhǔn)備好待執(zhí)行的腳本,本教程中以為L(zhǎng)inux實(shí)例(CentOS 7.6)自動(dòng)安裝Apache為例。
已為OOS服務(wù)創(chuàng)建RAM角色。該RAM角色的可信實(shí)體必須為阿里云服務(wù),受信服務(wù)為系統(tǒng)運(yùn)維管理,并且擁有執(zhí)行OOS模板的權(quán)限。具體操作,請(qǐng)參見為OOS服務(wù)設(shè)置RAM權(quán)限。
說明本教程中使用的示例RAM角色為OOSServiceRole,您也可以使用其他自定義的RAM角色。
操作步驟
本教程以O(shè)OS公共模板ACS-ESS-LifeCycleRunCommand為例,實(shí)現(xiàn)擴(kuò)容時(shí)在ECS實(shí)例中自動(dòng)執(zhí)行腳本。步驟如下:
步驟一:對(duì)RAM角色授予OOS服務(wù)權(quán)限
您需要擁有OOS的執(zhí)行權(quán)限才能執(zhí)行OOS的模板。執(zhí)行ACS-ESS-LifeCycleRunCommand中定義的運(yùn)維操作時(shí)涉及云服務(wù)器ECS、彈性伸縮的資源。
登錄RAM控制臺(tái)。
創(chuàng)建權(quán)限策略。
在左側(cè)導(dǎo)航欄,單擊 。
單擊創(chuàng)建權(quán)限策略。
在創(chuàng)建權(quán)限策略頁面,選擇權(quán)限策略的配置模式為腳本編輯后,設(shè)置其他參數(shù)項(xiàng),然后單擊確定。
本教程中使用的配置如下表所示,未提及的配置保持默認(rèn)即可。
配置項(xiàng)
說明
名稱
填寫ESSHookPolicyForRunCommand。
策略內(nèi)容
輸入以下內(nèi)容:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInvocationResults", "ecs:DescribeInvocations", "ecs:RunCommand" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
為OOSServiceRole授予權(quán)限策略。
在左側(cè)導(dǎo)航欄,單擊 。
找到OOSServiceRole,在操作列,單擊新增授權(quán)。
為OOS服務(wù)扮演的RAM角色OOSServiceRole添加所需權(quán)限即可完成授權(quán)。
在新增授權(quán)頁面,指定資源范圍和權(quán)限配置,然后單擊確認(rèn)新增授權(quán)。
本教程中使用的配置如下表所示,未提及的配置保持默認(rèn)即可。
配置項(xiàng)
說明
資源范圍
選擇賬號(hào)級(jí)別。
權(quán)限策略
添加自定義策略ESSHookPolicyForRunCommand。
步驟二:為擴(kuò)容活動(dòng)創(chuàng)建生命周期掛鉤并觸發(fā)擴(kuò)容
在創(chuàng)建生命周期掛鉤時(shí)選擇通知方式為OOS模板并設(shè)置相關(guān)參數(shù),即可在觸發(fā)擴(kuò)容活動(dòng)時(shí)自動(dòng)執(zhí)行腳本。
- 登錄彈性伸縮控制臺(tái)。
- 在左側(cè)導(dǎo)航欄中,單擊伸縮組管理。
- 在頂部菜單欄處,選擇地域。
- 找到待操作的伸縮組,選擇任一種方式打開伸縮組詳情頁面。
- 在伸縮組名稱/ID列,單擊伸縮組ID。
- 在操作列,單擊查看詳情。
為擴(kuò)容活動(dòng)創(chuàng)建生命周期掛鉤。
- 在頁面上方,單擊生命周期掛鉤頁簽。
單擊創(chuàng)建生命周期掛鉤。
指定生命周期掛鉤配置,然后單擊確認(rèn)。
本教程中使用的配置如下表所示,未提及的配置保持默認(rèn)即可。
配置項(xiàng)
說明
名稱
輸入ESSHookForRunCommand。
適用的伸縮活動(dòng)類型
選擇彈性擴(kuò)張活動(dòng)。
超時(shí)時(shí)間
輸入適當(dāng)?shù)某瑫r(shí)時(shí)間,例如300秒。
說明超時(shí)時(shí)間即用于執(zhí)行自定義操作的時(shí)間,若超時(shí)時(shí)間過短,可能導(dǎo)致自定義操作失敗,請(qǐng)?jiān)u估自定義操作耗時(shí)并設(shè)置適當(dāng)?shù)某瑫r(shí)時(shí)間。
默認(rèn)執(zhí)行策略
選擇繼續(xù)。
掛鉤期間執(zhí)行的動(dòng)作
模板配置如下:
通知方式:選擇OOS模板。
OOS模板類型:選擇公共模板。
公共模板:選擇ACS-ESS-LifeCycleRunCommand。
ACS-ESS-LifeCycleRunCommand的執(zhí)行參數(shù)配置如下:
云助手命令類型:選擇RunShellScript。
云助手命令:輸入待執(zhí)行的腳本,本教程中以自動(dòng)安裝Apache為例。
yum install -y httpd systemctl start httpd systemctl enable httpd
OOS扮演的RAM角色:選擇OOSServiceRole,操作步驟中已為RAM角色OOSServiceRole添加操作ECS、彈性伸縮資源的權(quán)限,OOS服務(wù)扮演該RAM角色即可擁有相關(guān)權(quán)限。
觸發(fā)擴(kuò)容。
本教程中以手動(dòng)執(zhí)行伸縮規(guī)則為例,您也可以通過定時(shí)任務(wù)、報(bào)警任務(wù)等方式觸發(fā)擴(kuò)容。
說明手動(dòng)執(zhí)行伸縮規(guī)則觸發(fā)擴(kuò)縮容時(shí),生命周期掛鉤會(huì)生效,但手動(dòng)添加或移出已有ECS實(shí)例時(shí),生命周期掛鉤不會(huì)生效。
在頁面上方,單擊伸縮規(guī)則與報(bào)警任務(wù)頁簽。
在伸縮規(guī)則頁簽下,單擊創(chuàng)建伸縮規(guī)則。
設(shè)置伸縮規(guī)則的屬性,然后單擊確認(rèn)。
本教程中使用的配置如下表所示,未提及的配置保持默認(rèn)即可。
配置項(xiàng)
說明
規(guī)則名稱
輸入Add1。
伸縮規(guī)則類型
選擇簡(jiǎn)單規(guī)則。
執(zhí)行的操作
設(shè)置為增加1臺(tái)。
在伸縮規(guī)則列表下,找到新建的伸縮規(guī)則Add1,在操作區(qū)域,單擊執(zhí)行。
單擊確定。
執(zhí)行伸縮規(guī)則后自動(dòng)創(chuàng)建1臺(tái)ECS實(shí)例,由于伸縮組內(nèi)已創(chuàng)建生命周期掛鉤ESSHookForRunCommand,ECS實(shí)例會(huì)被掛起,同時(shí)自動(dòng)通知OOS服務(wù)執(zhí)行ACS-ESS-LifeCycleRunCommand中定義的運(yùn)維操作。
查看自動(dòng)創(chuàng)建的ECS實(shí)例是否符合預(yù)期。
- 在頁面上方,單擊實(shí)例列表頁簽。
找到自動(dòng)創(chuàng)建的ECS實(shí)例,在云服務(wù)器ID/名稱區(qū)域,單擊實(shí)例ID。
在左側(cè)導(dǎo)航欄中,單擊發(fā)送命令/文件(云助手)。
在頁面右上角,單擊創(chuàng)建/執(zhí)行命令。
執(zhí)行以下命令查看Apache安裝結(jié)果。
具體操作,請(qǐng)參見創(chuàng)建并執(zhí)行命令。命令內(nèi)容如下所示:
systemctl status httpd
在命令執(zhí)行結(jié)果頁簽下,查看對(duì)應(yīng)的執(zhí)行詳情。如果結(jié)果顯示Apache服務(wù)已安裝且狀態(tài)為active,符合使用公共模板ACS-ESS-LifeCycleRunCommand執(zhí)行云助手命令中示例腳本的預(yù)期。
如果成功創(chuàng)建了ECS實(shí)例,但ECS實(shí)例并沒有自動(dòng)安裝Apache,請(qǐng)前往OOS控制臺(tái)查看運(yùn)維任務(wù)執(zhí)行情況。具體操作,請(qǐng)參見(可選)步驟三:查看OOS執(zhí)行情況。
(可選)步驟三:查看OOS執(zhí)行情況
在左側(cè)導(dǎo)航欄,選擇 。
按開始時(shí)間找到執(zhí)行,然后在操作列,單擊詳情。
進(jìn)入執(zhí)行詳情頁面,查看執(zhí)行的相關(guān)信息。
例如,您可以基本信息區(qū)域查執(zhí)行ID、執(zhí)行狀態(tài)等,也可以在執(zhí)行結(jié)果區(qū)域,單擊任務(wù)節(jié)點(diǎn)查看執(zhí)行詳情。具體操作,請(qǐng)參見查看執(zhí)行詳情。
說明如果執(zhí)行失敗,在執(zhí)行詳情頁面也會(huì)顯示相關(guān)的報(bào)錯(cuò)信息。
常見問題
如果運(yùn)維任務(wù)執(zhí)行失敗,請(qǐng)根據(jù)執(zhí)行結(jié)果中的報(bào)錯(cuò)信息排查原因。常見的報(bào)錯(cuò)信息及解決方案如下:
報(bào)錯(cuò)信息:Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.
解決方案:請(qǐng)檢查是否為RAM角色OOSServiceRole添加了相應(yīng)的權(quán)限,例如步驟一中的示例權(quán)限。您需要為RAM角色添加操作權(quán)限,確保OOS服務(wù)能夠操作OOS模板中涉及的資源。
報(bào)錯(cuò)信息:Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM.
解決方案:請(qǐng)檢查是否為RAM角色OOSServiceRole添加了相應(yīng)的權(quán)限,例如步驟一中的示例權(quán)限。您需要為RAM角色添加操作權(quán)限,確保OOS服務(wù)能夠操作OOS模板中涉及的資源。
報(bào)錯(cuò)信息:LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action.
解決方案:請(qǐng)?jiān)u估生命周期掛鉤的超時(shí)時(shí)間,確保在超時(shí)時(shí)間內(nèi)可以執(zhí)行完OOS模板中定義的運(yùn)維任務(wù)。
相關(guān)文檔
如果您需要為已經(jīng)加入伸縮組的ECS實(shí)例執(zhí)行腳本,可以使用滾動(dòng)升級(jí)功能。相關(guān)操作和教程,請(qǐng)參見: