可以将 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 的特定安装至关重要的某些文件和目录
- 升级 PostgreSQL(可选,但建议升级)
- 升级 Salt 基础架构(可选,但建议升级)
- 下载升级文件
- 升级 RaaS 节点
- 升级使用主节点插件的任何 Salt 主节点
有关通过 Aria Suite Lifecycle 升级 Config 的详细信息,请参见 LCM 文档中的升级 Automation Config。
备份 Automation Config 文件和目录
以下文件和目录包含自定义 Automation Config 配置,需要在升级之前进行备份:
- 在 RaaS 节点上,备份以下整个目录:
/etc/raas/raas
/etc/raas/raas.secconf
/var/log/raas
/etc/raas/pki/
注:pki
目录包含隐藏文件,因此请确保备份整个目录。备份/var/log/raas
目录中的日志文件是可选操作。在升级过程中,如果需要进行故障排除,需要清除日志文件以提供干净的日志文件。 - 在每个 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 数据库名称,然后复制内容:
- 在 PostgreSQL 服务器上,备份以下文件:
postgresql.conf
pg_hba.conf
- 使用以下命令以
postgres
用户身份登录。sudo su - postgres
- 获取数据库名称,使用以下命令进入 PostgreSQL,然后列出数据库:
psql \l
- 要退出 PostgreSQL 并以
postgres
用户身份注销,请按 Ctrl+D,然后运行以下命令:exit
- 将数据库内容复制到文件。以下命令提供了一个示例:
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 的 onedir 软件包的信息,请参见安装 Salt 的 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 节点,请执行以下操作:
- 从 Customer Connect 下载升级文件。
- 使用下列命令停止 RaaS 服务:
sudo systemctl stop raas
- 移除
/var/log/raas
目录中的日志文件。如果需要进行故障排除,清除日志文件会提供干净的日志文件。 - 使用以下命令移除当前安装的 API (RaaS) 版本:
sudo yum remove raas
- 通过安装最新的 RPM 升级 RaaS 节点。使用以下示例命令,并替换为 RPM 的确切文件名:
sudo yum install raas-rpm-file-name.rpm
- 重要说明:还原以下文件的备份:
/etc/raas/raas
/etc/raas/raas.secconf
/etc/raas/pki/
- 使用以下命令更新
raas
用户的权限:sudo chown -R raas:raas /etc/pki/raas/certs
- 可选:如果您具有 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
配置文件中的先前配置选项特定于这些加载项模块。 - 可选:如果您具有 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
配置文件中的先前配置选项特定于这些加载项模块。 - RaaS 当前有一个与失效作业相关的已知问题。升级时,某些用户可能会注意到一系列停滞在挂起状态的失效作业。升级 RaaS 节点可能会导致这些作业运行,除非先将其清除。
为防止发生这种情况,请先检查数据库中是否存储了任何旧命令。在 PostgreSQL 节点上,使用以下命令检查任何挂起的作业:
select count(1) from commands where state='new';
输出结果是挂起作业的数量。如果作业数量为
0
,请继续执行升级过程的其余步骤。 - 使用下列命令升级 RaaS 服务数据库:
sudo su - raas raas upgrade
注:根据数据库的大小,升级可能需要几分钟到一个多小时的时间。如果遇到错误,请查看
/var/log/raas/raas
日志文件,了解详细信息。 - 升级后,使用以下命令退出
raas
用户的会话:exit
- 使用下列命令启动 RaaS 服务:
sudo systemctl enable raas sudo systemctl start raas
使用 Automation Config 用户界面升级主节点插件
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
从 8.13.0 版本开始,主节点插件包括一个 tgtmatch 引擎,该引擎现在可将目标组匹配从 RaaS 服务器卸载到 Salt 主节点。建议启用并配置 tgtmatch 引擎,以使目标组匹配响应更快,尤其是在具有以下条件的环境中:
- 大量目标组(100 个或更多)
- 大量工作节点(3000 个或更多)
- 频繁更改工作节点 Grain(每日或更频繁)
- 频繁创建和删除工作节点(每日或更频繁)
engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {} - tgtmatch: {} sseapi_local_cache: load: 3600 tgt: 86400 pillar: 3600 exprmatch: 86400 tgtmatch: 86400 sseapi_tgt_match: poll_interval: 60 workers: 0 nice: 19
target_groups_from_master_only: true
在升级 Salt 主节点之前,请确保在 Salt 主节点上安装了 pip3 应用程序。如果要从最新版本的主节点插件进行升级,则已安装此应用程序。
要升级 Salt 主节点上的主节点插件,请执行以下操作:
- 使用以下命令停止
salt-master
服务:sudo systemctl stop salt-master
- 检查在 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*
- 通过手动卸载并重新安装更新的 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
- 更新 API (RaaS) 模块路径:编辑
/etc/salt/master.d/eAPIMasterPaths.conf
文件,引用各个模块的路径。例如,可以将此文件中的所有python2.7
引用更改为python3.6
。注:根据最初安装 Automation Config 的方式,eAPI Salt 主节点路径可能会位于
/etc/salt/master.d/raas.conf
文件中。 - 检查
/etc/salt/master.d/raas.conf
中的engines
部分,确认与以下内容一致:engines: - sseapi: {} - eventqueue: {} - rpcqueue: {} - jobcompletion: {}
注:如果出现问题,可能需要还原
/etc/salt/master.d/raas.conf
和/etc/salt/master.d/eAPIMasterPaths.conf
文件的备份。 - 如果使用的是 salt 主节点密钥身份验证(推荐),请确保在
/etc/salt/master.d/raas.conf
中注释掉sseapi_username
和sseapi_password
。#sseapi_username: #sseapi_password:
- 检查
master_job_cache
和event_return
条目是否设置为sseapi
。pgjsonb
返回程序不再可用。 - 使用以下命令启动
salt-master
服务:sudo systemctl start salt-master
- 验证 Salt 主节点是否以用户“root”身份运行,而不是以用户“salt”身份运行。如果不是,请修改 /etc/salt/master.d/raas.conf 文件,将用户更改为 root:
user: root
。
升级过程现已完成。如果遇到任何其他错误,请参阅故障排除。