通過OOS批量管理軟體,除了可安裝阿里雲Agent或軟體包管理工具的軟體,也支援安裝我的軟體。我的軟體支援以rpm、deb、msi等為尾碼的常規軟體包,通過維護我的軟體,您可高效管理各類平台及架構的軟體,本文將詳細介紹下建立和批量管理我的軟體的操作方法。
前提條件
我的軟體的安裝或卸載,僅支援在網路類型是專用網路的ECS執行個體下進行,請確保執行個體在VPC專用網路下。
對ECS執行個體安裝或卸載我的軟體前,請確保該執行個體已被授予執行個體RAM角色,且其被授予的RAM角色所擁有的許可權需包含如下JSON中的權限原則。授予方式可參考通過ECS執行個體RAM角色授權ECS訪問其他雲資源。
權限原則JSON指令碼:
{
"Version": "1",
"Statement": [
{
"Action": [
"oos:GetTemplate"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"oss:GetObject",
"oss:GetBucketAcl"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
檢查網路類型
登入ECS管理主控台。
在左側導覽列,單擊執行個體與鏡像>執行個體。
確認將安裝軟體的執行個體的網路類型是專用網路。
執行個體RAM角色的授予
首先檢查執行個體的RAM角色授予情況。在執行個體列表中,單擊藍色的執行個體ID。
查看執行個體詳情,若RAM角色為空白則為執行個體尚未被授予RAM角色。
單擊RAM控制台。
單擊許可權管理>權限原則>建立權限原則>指令碼編輯。並將本文前提條件中的JSON指令碼複製粘貼到指令碼配置的編輯欄中。
單擊繼續編輯基本資料>輸入名稱>單擊確定。
單擊角色>建立角色,選擇可信實體類型為阿里雲服務。單擊下一步。
角色類型選擇普通服務角色,填寫角色名稱。選擇受信服務為雲端服務器。 單擊完成。
單擊為角色授權,選擇上面步驟中建立的自訂策略,單擊確定。
接下來則需將RAM角色授予給目標執行個體,返回ECS管理主控台的執行個體列表。
找到將安裝軟體的執行個體,單擊更多>執行個體設定>授予或收回RAM角色。
選中已建立的RAM角色。
單擊確定,則完成了為執行個體授予RAM角色。
再次單擊藍色執行個體ID,則可在執行個體詳情中看到該執行個體已被成功授予RAM角色。
建立OSS儲存空間
登入OSS控制台。 建立一個用來儲存我的軟體的OOS Bucket。
單擊Bucket 列表>建立 Bucket。
輸入Bucket 名稱。
根據OOS的當前地區,選擇地區。其它屬性如儲存類型等可根據您的需求確定,或直接使用預設值。
單擊確定。
我的軟體的建立
登入OOS控制台。
單擊擴充程式。單擊建立擴充自訂程式。
單擊軟體資訊。
輸入擴充程式名稱,擴充程式描述,版本描述,單擊下一步。
上傳軟體包並配置安裝指令碼、卸載指令碼、平台以及架構。
安裝執行指令碼樣本:
#!/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
單擊建立。
我的軟體的安裝
開始安裝前請確保目標資源已滿足本文的前提條件一節,安裝我的軟體有兩個入口,可直接通過我的軟體來安裝,也可在批量管理軟體中進行安裝,本樣本通過批量管理軟體來完成自訂軟體的安裝。
單擊批量管理軟體,單擊建立。軟體類型選擇我的軟體。操作內容選擇安裝,並選擇將安裝的軟體名稱。
單擊選擇執行個體。本樣本通過手動選擇執行個體,並確保選擇的是網路類型為VPC的執行個體。單擊立即執行。
確認參數無誤後單擊確定建立執行。可通過批量管理軟體下的任務查看安裝詳情。
我的軟體的卸載
開始卸載前請確保目標資源已滿足本文的前提條件一節,單擊批量管理軟體。
單擊建立,軟體類型選擇我的軟體。
操作內容選擇卸載,並選擇將卸載的軟體名稱。
單擊選擇執行個體。本樣本通過手動選擇執行個體,並選中網路類型為VPC的執行個體。
單擊立即執行。
可通過批量管理軟體下的任務查看卸載詳情。