可以将 Automation Config 从先前版本升级到最新稳定版本。

升级 时最佳做法

计划升级时,请遵循以下准则:

  • 请勿按照安装程序或手动安装说明进行升级。如果要升级 Automation Config 安装,请参阅以下升级说明。
  • 为获得最佳效果,从一个主要版本增量升级到下一个主要版本。最佳做法是始终从 Automation Config 的最新主要版本升级到新的发布版本。如果使用的是旧版本,请从一个版本增量升级到下一个版本。
  • 备份数据。为防止数据丢失,请备份数据。
  • 在网络活动减缓期间执行升级。数据库升级需要重新编制数据索引。数据库升级可能需要几个小时,具体取决于数据的复杂性。为防止服务中断,请考虑在不太忙碌的工作时间升级数据库,或在升级之前对数据库进行修整。
  • 检查数据库中是否存储了任何旧命令。在某些情况下,PostgreSQL 数据库存储了已经不运行的旧命令。在升级过程中,重新启动主节点插件时,这些命令可能会运行。为防止发生这种情况,请检查数据库中是否存储了任何旧命令,并启用跳过早于定义时间的作业。
  • 在部署之前测试升级。如有可能,可以尝试在测试环境中运行一次试运行,了解升级可能需要的时间。
  • 先将整本指南通读一遍。在执行升级之前,还要考虑将整本指南通读一遍,以便了解需要执行的任务,以及是否需要您的团队进行规划,或者是否必须通知相关人员挂起的更改。

从旧版本升级

最佳做法是始终从 Automation Config 的最新主要版本升级到新的发布版本。如果要从最新版本之前的版本进行升级,如果以增量方式从一个主要版本升级到下一个主要版本,则可能会获得最佳结果。

有关升级到 Automation Config 早期版本的说明,请参见要升级的版本的特定升级说明。先前版本的升级说明包含在后续版本的安装指南 PDF 中。例如,如果需要从 5.5 升级到 6.0,请参见 6.0 安装 PDF 中的升级说明。

对于 Automation 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 安装和升级指南

如何升级 Automation Config

要升级 Automation Config,请按以下顺序完成以下任务:
  • 备份数据,包括对 Automation Config 的特定安装至关重要的某些文件和目录
  • 升级 PostgreSQL(可选,但建议升级)
  • 升级 Salt 基础架构(可选,但建议升级)
  • 下载升级文件
  • 升级 RaaS 节点
  • 升级使用主节点插件的任何 Salt 主节点

有关通过 Aria Suite Lifecycle 升级 Config 的详细信息,请参见 LCM 文档中的升级 Automation Config

备份 Automation Config 文件和目录

以下文件和目录包含自定义 Automation 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 文件。
    注:

    根据最初安装 Automation Config 的方式,eAPI Salt 主节点路径可能会位于 /etc/salt/master.d/raas.conf 文件中。

备份数据库架构

升级 RaaS 节点时,数据库模式会更新。因此,请确保在升级之前创建数据库备份。

要备份数据库,需要先查找 PostgreSQL 数据库名称,然后复制内容:

  1. 在 PostgreSQL 服务器上,备份以下文件:
    • postgresql.conf
    • pg_hba.conf
  2. 使用以下命令以 postgres 用户身份登录。
    sudo su - postgres
  3. 获取数据库名称,使用以下命令进入 PostgreSQL,然后列出数据库:
    psql
    \l
  4. 要退出 PostgreSQL 并以 postgres 用户身份注销,请按 Ctrl+D,然后运行以下命令:
    exit
  5. 将数据库内容复制到文件。以下命令提供了一个示例:
    pg_dump -U salteapi raas_db_name > postgres_raas_backup_$(date +%Y-%m-%d).sql

升级 PostgreSQL 数据库

Automation Config 要求使用 PostgreSQL 9.6 数据库,但建议使用 PostgreSQL 13.7。建议的 PostgreSQL 版本随 Automation Config 安装程序提供。

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

升级 Redis 数据库

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

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

升级 Salt

升级 Salt 时,必须先升级主节点。运行 Salt 版本高于其主节点的工作节点可能无法按预期运行,因为工作节点可能包含主节点中尚不可用的更改。此外,尽可能保留新主节点和旧工作节点之间的向后兼容性。通常,此策略的唯一例外是在出现安全漏洞时。

为获得最佳性能,请确保基础架构中的所有 Salt 组件都运行的是 Salt 的最新主要版本。

从 Salt 3006 版本开始,Salt Project 使用 onedir 打包系统。Onedir 代表“一个目录”,因为它包含 Salt 所需的所有可执行文件,包括 Python 和其他 Salt 依赖项。Onedir 支持 Salt 即时可用。
重要说明: Salt Project 强烈建议升级到 onedir 以继续接收 Salt 版本更新。从 Salt 版本 3006 开始,仅 onedir 软件包可用于升级。有关 Salt 版本和 onedir 的详细信息,请参见 知识库文章 89728
注: Salt Crystal 安装程序软件包已停用,对于未来的安装,建议使用 onedir 安装程序软件包。

必需:对于棕地/升级部署,从 Salt 3006 开始,Salt 主节点配置为以用户“salt”而不是传统的“root 用户”身份运行。因此,这可能会导致 RaaS 相关工作流(例如,工作节点部署和 RaaS 主节点插件升级)出现权限错误。

要修复此问题,请修改 /etc/salt/master.d/raas.conf 文件,将用户更改为 root:user: root

对于新的绿地部署,sseapi-config 命令会配置主节点插件,并生成具有正确 user: root 配置值的 raas.conf 文件。用户无需执行任何操作。

升级 RaaS 节点

升级到最新版本的 PostgreSQL、Redis 和 Salt 后,您可以将 RaaS 节点从以前的版本升级到最新版本。

注: 数据库升级需要重新编制数据索引。如果数据复杂,数据库升级可能需要数小时。
重要说明:

在升级 RaaS 节点之前,必须备份系统数据以避免数据丢失。要保留设置,请将对默认文件系统、pillar 数据和作业所做的任何更改另存为新文件或作业。此外,您应记录或复制任何现有的 pillar 目标分配,因为升级过程中会移除这些分配。

要升级 RaaS 节点,请执行以下操作:

  1. 从 Customer Connect 下载升级文件。
  2. 使用下列命令停止 RaaS 服务:
    sudo systemctl stop raas
  3. 移除 /var/log/raas 目录中的日志文件。如果需要进行故障排除,清除日志文件会提供干净的日志文件。
  4. 使用以下命令移除当前安装的 API (RaaS) 版本:
    sudo yum remove raas
  5. 通过安装最新的 RPM 升级 RaaS 节点。使用以下示例命令,并替换为 RPM 的确切文件名:
    sudo yum install raas-rpm-file-name.rpm
  6. 重要说明:还原以下文件的备份:
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /etc/raas/pki/
  7. 使用以下命令更新 raas 用户的权限:
    sudo chown -R raas:raas /etc/pki/raas/certs
  8. 可选:如果您具有 Automation for Secure Hosts 许可证,并且希望添加合规性库,请在 /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
    注:

    此步骤为可选步骤,仅适用于具有有效 Automation for Secure Hosts 许可证的组织。此加载项模块适用于 Automation Config 版本 6.0 及更高版本。/etc/raas/raas 配置文件中的先前配置选项特定于这些加载项模块。

  9. 可选:如果您具有 Automation for Secure Hosts 许可证,并且希望添加漏洞库,请在 /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'
                                    ]
    注:

    此步骤为可选步骤,仅适用于具有有效 Automation for Secure Hosts 许可证的组织。此加载项模块适用于 Automation Config 版本 6.0 及更高版本。/etc/raas/raas 配置文件中的先前配置选项特定于这些加载项模块。

  10. RaaS 当前有一个与失效作业相关的已知问题。升级时,某些用户可能会注意到一系列停滞在挂起状态的失效作业。升级 RaaS 节点可能会导致这些作业运行,除非先将其清除。

    为防止发生这种情况,请先检查数据库中是否存储了任何旧命令。在 PostgreSQL 节点上,使用以下命令检查任何挂起的作业:

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

    输出结果是挂起作业的数量。如果作业数量为 0,请继续执行升级过程的其余步骤。

  11. 使用下列命令升级 RaaS 服务数据库:
    sudo su - raas
    raas upgrade
    注:

    根据数据库的大小,升级可能需要几分钟到一个多小时的时间。如果遇到错误,请查看 /var/log/raas/raas 日志文件,了解详细信息。

  12. 升级后,使用以下命令退出 raas 用户的会话:
    exit
  13. 使用下列命令启动 RaaS 服务:
    sudo systemctl enable raas
    sudo systemctl start raas

使用 Automation Config 用户界面升级主节点插件

注: Automation Config 版本 8.11.2 或更高版本支持此功能。对于早期版本,必须先使用 CLI 将主插件升级到版本 8.11.2 或更高版本。
注: Salt 主节点必须以 root 用户身份运行。

Automation Config 会自动将主节点插件升级到最新版本,而无需用户执行任何操作。

但是,您也可以从 Automation Config 用户界面升级主节点插件。要升级主节点插件,请从 Automation Config 中选择管理,然后单击主节点插件。“主节点插件”选项卡显示您所用的插件版本和 Automation Config 环境版本,以及主节点插件 ID 列表。从“主节点插件”选项卡,可以选择要更新的主节点插件,然后单击更新

使用 CLI 升级主节点插件

成功升级 RaaS 节点后,可以升级使用主节点插件连接到 Automation Config 的任何 Salt 主节点。

建议通过生成默认配置文件并应用现有配置中要保留的任何设置来更新主节点插件配置。例如:
# sseapi-config --default >/tmp/raas.conf 
# cd /etc/salt/master.d 
# vim -d raas.conf /tmp/raas.conf
重要说明: 如果使用 onedir 安装的 Salt,则此可执行文件的路径为 /opt/saltstack/salt/extras-3.10/bin/sseapi-config

从 8.13.0 版本开始,主节点插件包括一个 tgtmatch 引擎,该引擎现在可将目标组匹配从 RaaS 服务器卸载到 Salt 主节点。建议启用并配置 tgtmatch 引擎,以使目标组匹配响应更快,尤其是在具有以下条件的环境中:

  • 大量目标组(100 个或更多)
  • 大量工作节点(3000 个或更多)
  • 频繁更改工作节点 Grain(每日或更频繁)
  • 频繁创建和删除工作节点(每日或更频繁)
要配置 tgtmatch 引擎,请确保主节点插件配置文件 (/etc/salt/master.d/raas.conf) 中存在以下设置:
engines: 
    - sseapi: {} 
    - eventqueue: {} 
    - rpcqueue: {} 
    - jobcompletion: {} 
    - keyauth: {} 
    - tgtmatch: {} 

sseapi_local_cache:     
    load: 3600 
    tgt: 86400 
    pillar: 3600 
    exprmatch: 86400 
    tgtmatch: 86400 

sseapi_tgt_match: 
    poll_interval: 60     
    workers: 0 
    nice: 19
要配置 RaaS 以期望 Salt 主节点提供目标匹配数据,请确保 RaaS 配置文件 (/etc/raas/raas) 中存在以下设置:
target_groups_from_master_only: true
注:

在升级 Salt 主节点之前,请确保在 Salt 主节点上安装了 pip3 应用程序。如果要从最新版本的主节点插件进行升级,则已安装此应用程序。

要升级 Salt 主节点上的主节点插件,请执行以下操作:

  1. 使用以下命令停止 salt-master 服务:
    sudo systemctl stop salt-master
  2. 检查在 Salt 主节点上运行的 Python 版本。如果运行的是 Python 3.6 或更高版本,则不需要进行更改。否则,请删除以前版本的 SSEAPE 模块。(SSEAPE 是 Salt 主节点的 Automation 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 文件的确切名称:
    注: 必须卸载现有插件,以防止 sseapi-config 的多个实例。
    pip3 uninstall SSEAPE-8.12.1.3-py3-none-any.whl
    mv /etc/salt/master.d/raas.conf /tmp
    salt-call pip.install SSEAPE-8.12.1.3-py3-none-any.whl
    cp /tmp/raas.conf /etc/salt/master.d/raas.conf
    systemctl restart salt-master
  4. 更新 API (RaaS) 模块路径:编辑 /etc/salt/master.d/eAPIMasterPaths.conf 文件,引用各个模块的路径。例如,可以将此文件中的所有 python2.7 引用更改为 python3.6
    注:

    根据最初安装 Automation 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
  9. 验证 Salt 主节点是否以用户“root”身份运行,而不是以用户“salt”身份运行。如果不是,请修改 /etc/salt/master.d/raas.conf 文件,将用户更改为 root:user: root

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