可以将 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 12.4。建议的 PostgreSQL 版本随 SaltStack Config 安装程序提供。

不要求升级到最新版本的 PostgreSQL。但是,升级 PostgreSQL 可能会提高性能。有关升级到最新 PostgreSQL 版本的说明,请参见 PostgreSQL 升级

升级 Redis 数据库

SaltStack Config 要求使用 Redis 5.x 数据库,但建议使用 Redis 5.0.4。建议的 Redis 版本随 SaltStack Config 安装程序提供。

不要求升级到 Redis 5.x 的最新版本。但是,升级 Redis 可能会提高性能。有关升级 Redis 的说明,请参见 Redis 管理

升级 Salt

为获得最佳性能,请确保基础架构中的 Salt 组件运行的是 Salt 的最新主要版本。例如,检查工作节点的 Salt 是否为最新版本。

有关升级 Salt 主节点和其他 Salt 组件的说明,请参见升级 Salt 基础架构

有关升级 Salt Crystal 软件包中的说明,请参见如何升级 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. 更新 API (RaaS) 模块路径:编辑 /etc/salt/master.d/eAPIMasterPaths.conf 文件,引用各个模块的路径。例如,可以将此文件中的所有 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

升级过程现已完成。如果遇到任何其他错误,请参阅故障排除