您可以將 SaltStack Config 從先前版本升級至最新穩定版本。

升級時的最佳做法

計劃升級時,請遵循以下準則:

  • 請勿使用安裝程式或手動安裝指示進行升級。如果您要升級 SaltStack Config 安裝,請參閱下列升級指示。
  • 為獲得最佳效果,請從一個主要版本遞增至下一個主要版本。最佳做法是,一律從 SaltStack Config 的最新主要版本升級至新版本。如果使用的是較舊版本,請從一個版本以遞增方式升級至下一個版本。
  • 備份資料。為了防止資料遺失,請備份您的資料。
  • 在網路活動緩慢的時段內執行升級。資料庫升級需要對資料重新建立索引。資料庫升級可能需要幾個小時的時間,視資料複雜性而定。若要避免服務中斷,請考慮在較慢的工作時間內升級資料庫,或在升級前整理資料庫。
  • 檢查資料庫中是否儲存了任何舊命令。在某些情況下,PostgreSQL 資料庫會儲存尚未執行的舊命令。重新啟動主節點外掛程式時,這些命令可能會在升級程序期間執行。若要防止發生此情況,請檢查資料庫中是否儲存了任何舊命令,並啟用略過超過定義時間的工作。
  • 部署前測試升級。如果可能,可以嘗試在測試環境中進行試驗,以瞭解升級可能需要多長時間。
  • 先閱讀整個指南。執行升級之前,另請考慮通讀一遍本指南,以便瞭解所需執行的工作以及是否需要您的團隊進行規劃,或是否必須通知相關人士有關擱置中的變更。

從舊版本升級

最佳做法是,一律從 SaltStack Config 的最新主要版本升級至新版本。如果要從最新版本之前的版本進行升級,若以遞增方式從一個主要版本升級到下一個主要版本,則可能會獲得最佳結果。

如需有關升級到 SaltStack Config 較早版本的指示,請參閱要升級的版本的特定升級指示。先前版本的升級指示包含在後續版本的安裝指南 PDF 中。例如,如果需要從 5.5 升級到 6.0,請參閱 6.0 安裝 PDF 中的升級指示。

對於 SaltStack Config 版本 8.4 及更新版本,請使用本頁頂部的版本選取器為您的產品版本選取正確的升級指南。對於版本 8.3 及更舊版本,請使用下表中的 PDF 指南:

版本 安裝與升級指南 (PDF)
8.3 8.3 安裝與升級指南
6.4 6.4 安裝與升級指南
6.3 6.3 安裝與升級指南
6.2 6.2 安裝與升級指南
6.1 6.1 安裝與升級指南
6.0.1 6.0.1 安裝與升級指南
6.0 6.0 安裝與升級指南

如何升級 SaltStack Config

若要升級 SaltStack Config,請按照以下順序完成下列工作:
  • 備份資料,包括對於 SaltStack Config 的特定安裝至關重要的某些檔案和目錄。
  • 升級 PostgreSQL (可選,但建議升級)
  • 升級 Salt 基礎結構 (可選,但建議升級)
  • 下載升級檔案
  • 升級 RaaS 節點
  • 使用主節點外掛程式升級任何 Salt 主節點

如需有關透過 Lifecyle Manager 升級 SSC 的詳細資訊,請參閱 LCM 說明文件中的〈升級 vRealize Automation SaltStack Config〉

備份 SaltStack Config 檔案和目錄

下列檔案和目錄包含自訂 SaltStack Config 組態,您需要在升級前對其進行備份:

  1. 在 RaaS 節點上,備份以下整個目錄:
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /var/log/raas
    • /etc/raas/pki/
    備註:

    pki 目錄包含隱藏檔案,因此,請務必備份整個目錄。備份 /var/log/raas 目錄中的記錄檔是可選的。在升級過程中,如果需要進行疑難排解,則將清除這些記錄檔以提供一個乾淨的記錄檔。

  2. 在每個 Salt 主節點上,備份 /etc/salt/master.d/raas.conf/etc/salt/master.d/eAPIMasterPaths.conf 檔案。
    備註:

    根據最初安裝 SaltStack Config 的方式,eAPI Salt 主節點路徑可能改為位於 /etc/salt/master.d/raas.conf 檔案中。

備份資料庫架構

升級 RaaS 節點時,資料庫架構將會更新。基於此原因,請確保在升級前建立資料庫備份。

若要備份資料庫,需要首先查詢 PostgreSQL 資料庫名稱,然後複製內容:

  1. 在 PostgreSQL 伺服器上,備份以下檔案:
    • postgres.conf
    • pg_hba.conf
  2. 使用下列命令以 postgres 使用者身分登入:
    sudo su - postgres
  3. 取得資料庫名稱,使用下列命令進入 PostgreSQL,然後列出資料庫:
    psql
    \l
  4. 若要結束 PostgreSQL 並以 postgres 使用者身分登出,請按 Ctrl+D,然後執行下列命令:
    exit
  5. 將資料庫內容複製到檔案。下列命令提供了一個範例:
    pg_dump -U salt_eapi raas_db_name > postgres_raas_backup_$(date +%Y-%m-%d).sql

升級 PostgreSQL 資料庫

SaltStack Config 需要 PostgreSQL 9.6 資料庫,但建議使用 PostgreSQL 13.7。建議的 PostgreSQL 版本隨附於 SaltStack Config 安裝程式。

不需要升級至最新版本的 PostgreSQL。但是,升級 PostgreSQL 可能會提升效能。如需升級至最新版本的 PostgreSQL 的相關指示,請參閱 PostgreSQL 升級

升級 Redis 資料庫

SaltStack Config 需要 Redis 5.x 資料庫,但建議使用 Redis 6.2.7。建議的 Redis 版本隨附於 SaltStack Config 安裝程式。

不需要升級至 Redis 5.x 的最新版本。但是,升級 Redis 可能會提升效能。如需升級 Redis 的相關指示,請參閱〈Redis 管理〉

升級 Salt

升級 Salt 時,必須先升級主節點。執行 Salt 版本高於其主節點的部屬節點可能無法按預期進行,因為部屬節點可能包含主節點中尚不可用的變更。此外,盡可能保留新主節點和舊部屬節點之間的回溯相容性。通常,此原則的唯一例外狀況是在出現安全性漏洞時。

為獲得最佳效能,請確保基礎結構中的所有 Salt 元件執行的是 Salt 最新主要版本。

重要: Salt 版本 3005 和 3005.1 使用的 onedir 安裝套件不支援 SaltStack Config 或與之不相容。若要將 Salt 版本 3005 或 3005.1 與 SaltStack Config 結合使用,請僅使用經典安裝程式套件。如需有關 Salt 版本 3005/3005.1 和 onedir 的詳細資訊,請參閱 知識庫文章 89728

如需升級 Salt Crystal 套件的相關指示,請參閱〈如何升級 Salt Crystal〉

提示: 無法定期透過網際網路更新 Salt 可能會對您的網路造成問題,除非您的網路是氣隙網路。因此,強烈建議預先安裝 Salt,而非使用 Salt Crystal 套件。

升級 RaaS 節點

升級至最新版本的 PostgreSQL、Redis 和 Salt 後,可以將 RaaS 節點從先前版本升級至最新版本。

備註: 資料庫升級需要對資料重新建立索引。如果資料比較複雜,則資料庫升級可能需要幾個小時的時間。
重要:

升級 RaaS 節點之前,必須備份系統資料以避免資料遺失。

升級 RaaS 節點:

  1. 從 Customer Connect 下載升級檔案。
  2. 將對預設檔案系統、pillar 資料和工作進行的任何變更另存為新的檔案或工作。
  3. 注意對預設目標進行的任何 pillar 指派。升級後需要重新指派這些內容。
  4. 使用下列命令停止 RaaS 服務:
    sudo systemctl stop raas
  5. 移除 /var/log/raas 目錄中的記錄檔。如果需要進行疑難排解,則清除記錄檔會提供一個乾淨的記錄檔。
  6. 使用下列命令移除目前安裝的 API (RaaS) 版本:
    sudo yum remove raas
  7. 安裝最新的 RPM 以升級 RaaS 節點。使用以下範例命令,取代 RPM 的確切檔案名稱:
    sudo yum install raas-rpm-file-name.rpm
  8. 重要事項:還原下列檔案的備份:
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /etc/raas/pki/
  9. 使用下列命令更新 raas 使用者的權限:
    sudo chown -R raas:raas /etc/pki/raas/certs
  10. 可選:如果您有 SaltStack SecOps 授權,並且想要新增合規性程式庫,請在 /etc/raas/raas 檔案中新增以下區段:
    sec:
      ingest_override: true
      locke_dir: locke
      post_ingest_cleanup: true
      username: 'secops'
      content_url: 'https://enterprise.saltstack.com/secops_downloads'
      download_enabled: true
      download_frequency: 86400
      stats_snapshot_interval: 3600
      compile_stats_interval: 10
      ingest_on_boot: True
      content_lock_timeout: 60
      content_lock_block_timeout: 120
    備註:

    此步驟是可選的,僅適用於擁有有效 SaltStack SecOps 授權的組織。此附加元件模組適用於 SaltStack Config 6.0 版及更新版本。/etc/raas/raas 組態檔中的先前組態選項特定於這些附加元件模組。

  11. 可選:如果您有 SaltStack SecOps 授權,並且想要新增漏洞庫,請在 /etc/raas/raas 檔案中新增區段:
    vman:
      vman_dir: vman
      download_enabled: true
      download_frequency: 86400
      username: vman
      content_url: 'https://enterprise.saltstack.com/vman_downloads'
      ingest_on_boot: true
      compile_stats_interval: 60
      stats_snapshot_interval: 3600
      old_policy_file_lifespan: 2
      delete_old_policy_files_interval: 86400
      tenable_asset_import_enabled: True
      tenable_asset_import_grains: ['fqdn', 'ipv4', 'ipv6', 'hostname', 'mac_address', 'netbios_name',
                                    'bios_uuid', 'manufacturer_tpm_id', 'ssh_fingerprint',
                                    'mcafee_epo_guid', 'mcafee_epo_agent_guid', 'symantec_ep_hardware_key',
                                    'qualys_asset_id', 'qualys_host_id', 'servicenow_sys_id', 'gcp_project_id',
                                    'gcp_zone', 'gcp_instance_id', 'azure_vm_id', 'azure_resource_id',
                                    'aws_availability_zone', 'aws_ec2_instance_ami_id',
                                    'aws_ec2_instance_group_name', 'aws_ec2_instance_state_name',
                                    'aws_ec2_instance_type', 'aws_ec2_name', 'aws_ec2_product_code',
                                    'aws_owner_id', 'aws_region', 'aws_subnet_id', 'aws_vpc_id',
                                    'installed_software', 'bigfix_asset_id'
                                    ]
    備註:

    此步驟是可選的,僅適用於擁有有效 SaltStack SecOps 授權的組織。此附加元件模組適用於 SaltStack Config 6.0 版及更新版本。/etc/raas/raas 組態檔中的先前組態選項特定於這些附加元件模組。

  12. RaaS 目前存在一個與失效工作相關的已知問題。升級時,某些使用者可能會注意到一系列停滯在擱置中狀態的失效工作。除非先將這些工作清除,否則升級 RaaS 節點可能會導致這些工作執行。

    若要防止發生此情況,請先檢查資料庫中是否儲存了任何舊命令。在 PostgreSQL 節點上,使用下列命令檢查是否有擱置中的工作:

    select count(1) from commands where state='new';

    結果顯示的是擱置中工作數目。如果工作數目為 0,請繼續執行升級程序的其餘步驟。

  13. 使用下列命令升級 RaaS 服務資料庫:
    sudo su - raas
    raas upgrade
    備註:

    根據資料庫的大小,升級可能需要幾分鐘到一個多小時的時間。如果遇到錯誤,請查看 /var/log/raas/raas 記錄檔以瞭解詳細資訊。

  14. 升級後,使用下列命令結束 raas 使用者的工作階段:
    exit
  15. 使用下列命令啟動 RaaS 服務:
    sudo systemctl enable raas
    sudo systemctl start raas

升級主節點外掛程式

成功升級 RaaS 節點後,可以接著升級使用主節點外掛程式連線至 SaltStack Config 的任何 Salt 主節點。

備註:

升級 Salt 主節點之前,請確保 Salt 主節點上已安裝 pip3 應用程式。如果您要從最新版本的主節點外掛程式升級,則已安裝此應用程式。

在 Salt 主節點上升級主節點外掛程式:

  1. 使用下列命令停止 salt-master 服務:
    sudo systemctl stop salt-master
  2. 檢查 Salt 主節點上正在執行哪個版本的 Python。如果執行的是 Python 3.6 或更高版本,則不需要進行變更。否則,請刪除先前版本的 SSEAPE 模組。(SSEAPE 是 Salt 主節點的 SaltStack Config 外掛程式)。例如:

    RHEL/CentOS

    sudo rm -rf /usr/lib/python3.6/site-packages/SSEAPE*

    Ubuntu

    sudo rm /usr/lib/python3.6/dist-packages/SSEAPE*
  3. 手動安裝更新的 Python wheel 以升級主節點外掛程式。使用以下範例命令,取代 wheel 檔案的確切名稱:

    RHEL/CentOS

    sudo pip3 install SSEAPE-file-name.whl --prefix /usr

    Ubuntu

    sudo pip3 install SSEAPE-file-name.whl
    備註:

    某些使用者可能需要將其作業系統的語法更改為 pip3.6pip36

  4. 透過編輯 /etc/salt/master.d/eAPIMasterPaths.conf 檔案以參考各個模組的路徑,進而更新 API (RaaS) 模組路徑。例如,可以將此檔案中的所有 python2.7 參考變更為 python3.6
    備註:

    根據最初安裝 SaltStack Config 的方式,eAPI Salt 主節點路徑可能改為位於 /etc/salt/master.d/raas.conf 檔案中。

  5. 檢查 /etc/salt/master.d/raas.conf 中的 engines 區段,確認其是否符合下列內容:
    engines:
      - sseapi: {}
      - eventqueue: {}
      - rpcqueue: {}
      - jobcompletion: {}
      - keyauth: {}
    備註:

    如果發生問題,可能需要還原 /etc/salt/master.d/raas.conf/etc/salt/master.d/eAPIMasterPaths.conf 檔案的備份。

  6. 如果使用的是 salt 主節點金鑰驗證 (建議),請確保已設定 sseapi_pubkey_path 並在 /etc/salt/master.d/raas.conf 中註釋掉 sseapi_usernamesseapi_password
    sseapi_pubkey_path: /etc/salt/pki/master/sseapi_key.pub
    
    #sseapi_username:
    #sseapi_password:
  7. 確認 master_job_cacheevent_return 項目是否設定為 sseapipgjsonb 傳回程式無法再使用。
  8. 使用下列命令啟動 salt-master 服務:
    sudo systemctl start salt-master

升級程序現已完成。如果遇到任何其他錯誤,請參閱〈疑難排解〉