全部產品
Search
文件中心

CloudOps Orchestration Service:批量管理自訂擴充程式

更新時間:Dec 18, 2024

通過OOS批量管理軟體,除了可安裝阿里雲Agent或軟體包管理工具的軟體,也支援安裝自訂擴充程式。自訂擴充程式支援以rpm、deb、msi等為尾碼的常規軟體包,通過維護自訂擴充程式,您可高效管理各類平台及架構的軟體,本文將詳細介紹下建立和批量管理自訂軟體的操作方法。

準備工作

  1. 建立ECS執行個體,且該執行個體的網路類型為專用網路

    具體操作,請參見自訂購買執行個體。安裝或卸載自訂擴充程式,僅支援在專用網路下進行,請確認已建立的ECS執行個體的網路類型為專用網路

    確認網路類型為專用網路

    1. 登入ECS管理主控台

    2. 在左側導覽列,選擇執行個體與鏡像 > 執行個體

    3. 找到待安裝軟體的ECS執行個體,在對應網路類型列下,確認該執行個體的網路類型是專用網路

  2. 建立RAM角色並授予給ECS執行個體。

    具體操作,請參見建立RAM角色並授予給ECS執行個體。需注意以下參數選擇:

    1. 建立自訂權限原則。

      具體操作,請參見建立自訂權限原則。ECS執行個體被授予的RAM角色所擁有的許可權需包含如下JSON中的權限原則。

      權限原則JSON指令碼

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "oos:GetTemplate"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "oss:GetObject",
                      "oss:GetBucketAcl"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ]
      }
    2. 建立RAM角色。

      具體操作,請參見建立普通服務角色。需注意以下參數選擇:

      • 可信實體類型:選擇阿里雲服務

      • 角色類型:選擇普通服務角色

      • 受信服務:選擇雲端服務器

    3. 為已建立的RAM角色授權。

      為RAM角色新增授權時,權限原則選擇2.a 建立自訂權限原則中的已設定好的自訂策略。具體操作,請參見為RAM角色授權

    4. 為ECS執行個體授予RAM角色。

      RAM角色選擇上步驟中已建立並授權的RAM角色。具體操作,請參見建立RAM角色並授予給ECS執行個體

  3. 建立用於儲存自訂擴充程式的OSS Bucket。

    具體操作,請參見建立儲存空間。其中,選擇地區時,您需要下拉選擇有地區屬性,然後指定與OOS相同的地區。

建立自訂擴充程式

  1. 登入OOS控制台

  2. 在左側導覽列,選擇伺服器管理 > 擴充程式,然後單擊自訂擴充程式頁簽。

  3. 單擊建立自訂擴充程式,根據頁面提示填寫基本資料,單擊下一步

    自訂擴充程式僅自己可見,可供自身帳號進行擴充程式的安裝或卸載。主要參數項說明如下:

    參數項

    說明

    擴充程式分類

    表示擴充程式所屬的類型,您可以根據業務需要選擇歸屬於驅動類型、效能加速類型、代理類型以及應用類型。

    版本描述

    首次建立時的版本自動標識為V1。建立完成之後,您可以在擴充程式詳情頁看到版本編號以及版本的詳細資料。

    說明

    您需要通過更新擴充程式功能對該擴充程式進行修改,更新時系統會自動產生V2版本,以此類推。

    擴充程式支援範圍

    用於限定該擴充程式的適用條件,包括支援的執行個體規格類型系列、鏡像類別和作業系統平台/版本。設定該項後,使用者在ECS售賣頁、ECS執行個體詳情頁安裝擴充程式時,會根據適用條件進行判斷,僅能夠選擇可用的擴充程式。

    命令參數

    指定該擴充程式命令的入參,支援添加多個參數。參數類型可選擇字串、數值型和布爾值,支援定義參數名稱、預設值、參數描述等資訊。設定安裝命令參數後,使用者在ECS售賣頁、ECS執行個體詳情頁安裝擴充程式時,需要為該參數賦值。

  4. 擴充程式配置階段,根據頁面提示配置相關參數。

    說明

    您可以添加多個擴充程式配置,在後續安裝擴充程式時,系統會尋找到符合ECS作業系統和架構的擴充程式,並下載對應的軟體包,執行相應的安裝/卸載指令碼,從而實現一鍵安裝擴充程式。

    指令碼.png

    其中,安裝執行指令碼卸載執行指令碼樣本如下:

    • 安裝執行指令碼樣本

      #!/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
  5. 單擊建立

    建立完成後,您可以在自訂擴充程式頁簽下,查看到已建立的自訂擴充程式。

    我的軟體.png

安裝自訂擴充程式

  1. 登入OOS控制台

  2. 在左側導覽列,選擇自訂任務 > 常用營運任務 > 批量管理軟體,然後單擊建立

  3. 建立批量管理軟體任務頁面,按照頁面提示配置相關參數,單擊建立

    • 操作內容選擇安裝

    • 擴充程式名稱選擇自訂擴充程式,並選擇待安裝的自訂擴充程式名稱。

    • 選擇執行個體選擇手動選擇執行個體方式,並在執行個體列表中選擇需要安裝自訂擴充程式的ECS執行個體,請確保該ECS的網路類型為VPC。

  4. 在彈出的參數確認對話方塊,確認參數無誤後,單擊確定建立執行。

    建立成功後,您可在任務執行管理頁面下的工作清單中查看自訂擴充程式已安裝。

    任務執行管理.png

卸載自訂擴充程式

  1. 登入OOS控制台

  2. 在左側導覽列,選擇自訂任務 > 常用營運任務 > 批量管理軟體,然後單擊建立

  3. 建立批量管理軟體任務頁面,按照頁面提示配置相關參數,單擊建立

    • 操作內容選擇卸載

    • 擴充程式名稱選擇自訂擴充程式,並選擇待卸載的自訂擴充程式名稱。

    • 選擇執行個體選擇手動選擇執行個體方式,並在執行個體列表中選擇需要卸載自訂擴充程式的ECS執行個體。

  4. 在彈出的參數確認對話方塊,確認參數無誤後,單擊確定建立執行。

    建立成功後,您可在任務執行管理頁面下的工作清單中查看自訂擴充程式已成功卸載。

    任務執行管理.png