通過OOS批量管理軟件,除了可安裝阿里云Agent或軟件包管理工具的軟件,也支持安裝自定義擴展程序。自定義擴展程序支持以rpm、deb、msi等為后綴的常規軟件包,通過維護自定義擴展程序,您可高效管理各類平臺及架構的軟件,本文將詳細介紹下創建和批量管理自定義軟件的操作方法。
準備工作
創建ECS實例,且該實例的網絡類型為專有網絡。
具體操作,請參見自定義購買實例。安裝或卸載自定義擴展程序,僅支持在專有網絡下進行,請確認已創建的ECS實例的網絡類型為專有網絡。
登錄ECS管理控制臺。
在左側導航欄,選擇
。找到待安裝軟件的ECS實例,在對應網絡類型列下,確認該實例的網絡類型是專有網絡。
創建RAM角色并授予給ECS實例。
具體操作,請參見創建RAM角色并授予給ECS實例。需注意以下參數選擇:
創建自定義權限策略。
具體操作,請參見創建自定義權限策略。ECS實例被授予的RAM角色所擁有的權限需包含如下JSON中的權限策略。
{ "Version": "1", "Statement": [ { "Action": [ "oos:GetTemplate" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oss:GetObject", "oss:GetBucketAcl" ], "Effect": "Allow", "Resource": "*" } ] }
創建RAM角色。
具體操作,請參見創建普通服務角色。需注意以下參數選擇:
可信實體類型:選擇阿里云服務。
角色類型:選擇普通服務角色。
受信服務:選擇云服務器。
為已創建的RAM角色授權。
為RAM角色新增授權時,權限策略選擇2.a 創建自定義權限策略中的已設置好的自定義策略。具體操作,請參見為RAM角色授權。
為ECS實例授予RAM角色。
RAM角色選擇上步驟中已創建并授權的RAM角色。具體操作,請參見創建RAM角色并授予給ECS實例。
創建用于存儲自定義擴展程序的OSS Bucket。
具體操作,請參見創建存儲空間。其中,選擇地域時,您需要下拉選擇有地域屬性,然后指定與OOS相同的地域。
創建自定義擴展程序
登錄OOS控制臺。
在左側導航欄,選擇
,然后單擊自定義擴展程序頁簽。單擊創建自定義擴展程序,根據頁面提示填寫基本信息,單擊下一步。
自定義擴展程序僅自己可見,可供自身賬號進行擴展程序的安裝或卸載。主要參數項說明如下:
參數項
說明
擴展程序分類
表示擴展程序所屬的類型,您可以根據業務需要選擇歸屬于驅動類型、性能加速類型、代理類型以及應用類型。
版本描述
首次創建時的版本自動標識為V1。創建完成之后,您可以在擴展程序詳情頁看到版本編號以及版本的詳細信息。
說明您需要通過更新擴展程序功能對該擴展程序進行修改,更新時系統會自動生成V2版本,以此類推。
擴展程序支持范圍
用于限定該擴展程序的適用條件,包括支持的實例規格族、鏡像類別和操作系統平臺/版本。設置該項后,用戶在ECS售賣頁、ECS實例詳情頁安裝擴展程序時,會根據適用條件進行判斷,僅能夠選擇可用的擴展程序。
命令參數
指定該擴展程序命令的入參,支持添加多個參數。參數類型可選擇字符串、數值型和布爾值,支持定義參數名稱、默認值、參數描述等信息。設定安裝命令參數后,用戶在ECS售賣頁、ECS實例詳情頁安裝擴展程序時,需要為該參數賦值。
在擴展程序配置階段,根據頁面提示配置相關參數。
說明您可以添加多個擴展程序配置,在后續安裝擴展程序時,系統會尋找到符合ECS操作系統和架構的擴展程序,并下載對應的軟件包,執行相應的安裝/卸載腳本,從而實現一鍵安裝擴展程序。
其中,安裝執行腳本和卸載執行腳本示例如下:
#!/bin/bash ####### 單進程軟件包安裝腳本模板說明 ######### #1. 此腳本默認在根路徑下執行 Linux系統默認為 /root #2. 腳本安裝軟件執行成功后默認會刪除遠程下載的路徑 #3. 用戶自定義實現建議在job_start下 #4. 需遵循進程ID的存儲約束,軟件包進程ID標識需存儲到指定路徑 ####### error code specification ######### # Please update this documentation if new error code is added. # 1 => install fail # 2 => check health fail # 3 => record process id fail # 4 => user shell fail function user_shell() { #用戶自定義安裝腳本 START $nohup java -jar demo-1.0.0-SNAPSHOT.jar > /demo.log 2>&1 & #用戶自定義安裝腳本 END } ##### 可在腳本開始運行時調用,打印當時的時間戳及PID,同時記錄軟件包進程ID到指定路徑。 function job_start() { user_shell if [ $? -ne 0 ]; then exit4 else # 此處約束禁止刪除 now=$(date +'%Y-%m-%d %H:%M:%S') pid=$! echo "[$now][$pid] job_start" pidPath="/etc/aliyun" if [ ! -d $pidPath ]; then mkdir -p /etc/aliyun echo "創建PID存儲路徑 $pidPath" fi echo "$pid" > "$pidPath/main_process_id" if [ $? -ne 0 ]; then exit3 fi fi } ##### 在此函數中檢查服務是否起來,可以是檢查進程,curl http地址等方式 function check_health() { now=$(date +'%Y-%m-%d %H:%M:%S') echo "[$now][$$] check_health" } function exit1() { echo "exit code 1, install fail" exit 1 } function exit2() { echo "exit code 2, check health fail" exit 2 } function exit3() { echo "exit code 3, record process id fail" exit 3 } function exit4() { echo "exit code 4, user shell fail" exit 4 } ##### 如果返回值為0,則認為此執行成功,如果非0,則認為執行失敗 function main() { job_start if [ $? -ne 0 ]; then exit1 fi check_health if [ $? -ne 0 ]; then exit2 fi } ##### 觸發執行日志由OOS自動記錄 main
#!/bin/bash ##### 可在腳本開始運行時調用,打印當時的時間戳及PID。 function job_stop() { pid=$(cat /etc/aliyun/main_process_id) kill -9 $pid now=`date +'%Y-%m-%d %H:%M:%S'` echo "[$now][$pid] job_stop" } job_stop if [ $? -ne 0 ]; then echo "[$now][$$] job stop failed." exit 1 fi
單擊創建。
創建完成后,您可以在自定義擴展程序頁簽下,查看到已創建的自定義擴展程序。
安裝自定義擴展程序
登錄OOS控制臺。
在左側導航欄,選擇
,然后單擊創建。在新建批量管理軟件任務頁面,按照頁面提示配置相關參數,單擊創建。
操作內容選擇安裝。
擴展程序名稱選擇自定義擴展程序,并選擇待安裝的自定義擴展程序名稱。
選擇實例選擇手動選擇實例方式,并在實例列表中選擇需要安裝自定義擴展程序的ECS實例,請確保該ECS的網絡類型為VPC。
在彈出的參數確認對話框,確認參數無誤后,單擊確定創建執行。
創建成功后,您可在任務執行管理頁面下的任務列表中查看自定義擴展程序已安裝。
卸載自定義擴展程序
登錄OOS控制臺。
在左側導航欄,選擇
,然后單擊創建。在新建批量管理軟件任務頁面,按照頁面提示配置相關參數,單擊創建。
操作內容選擇卸載。
擴展程序名稱選擇自定義擴展程序,并選擇待卸載的自定義擴展程序名稱。
選擇實例選擇手動選擇實例方式,并在實例列表中選擇需要卸載自定義擴展程序的ECS實例。
在彈出的參數確認對話框,確認參數無誤后,單擊確定創建執行。
創建成功后,您可在任務執行管理頁面下的任務列表中查看自定義擴展程序已成功卸載。