2.7. 高级配置选项
高级配置选项(如外部数据库设置和使用自定义 TLS 证书)可用于更复杂的容器化 Ansible Automation Platform 部署。
如果不使用这些高级配置选项,请参阅 安装容器化 Ansible Automation Platform 以继续安装。
2.7.1. 在 Event-Driven Ansible 控制器中添加安全插件变量 复制链接链接已复制到粘贴板!
当使用 redhat.insights_eda 或类似的插件在 Event-Driven Ansible 控制器中运行规则激活时,您必须将安全插件变量添加到 Ansible Automation Platform 中的目录中。这样可确保 Event-Driven Ansible 控制器和源插件之间的连接,并正确显示端口映射。
流程
为安全插件变量创建目录:
mkdir -p ./group_vars/automationeda
mkdir -p ./group_vars/automationedaCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在该目录中为您的新设置创建一个文件(例如,
touch ./group_vars/automationeda/custom.yml) 使用要启用的插件列表添加变量
eda_safe_plugins。例如:eda_safe_plugins: ['ansible.eda.webhook', 'ansible.eda.alertmanager']
eda_safe_plugins: ['ansible.eda.webhook', 'ansible.eda.alertmanager']Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.2. 添加执行节点 复制链接链接已复制到粘贴板!
容器化 Ansible Automation Platform 可以部署远程执行节点。
您可以在清单文件的 [execution_nodes] 组中定义远程执行节点:
[execution_nodes] <fqdn_of_your_execution_host>
[execution_nodes]
<fqdn_of_your_execution_host>
默认情况下,执行节点使用以下设置进行配置,可根据需要进行修改:
receptor_port=27199 receptor_protocol=tcp receptor_type=execution
receptor_port=27199
receptor_protocol=tcp
receptor_type=execution
-
receptor_port- 接收器侦听来自其他 receptor 节点的传入连接的端口号。 -
receptor_type- 节点的角色。有效选项包括execution或hop。 -
receptor_protocol- 用于通信的协议。有效选项包括tcp或udp。
默认情况下,[execution_nodes] 组中的所有节点都会添加为控制器节点的对等点。要更改对等配置,请使用 receptor_peers 变量。
receptor_peers 的值必须是以逗号分隔的主机名列表。不要使用清单组名称。
配置示例:
2.7.3. 为自动化中心配置存储 复制链接链接已复制到粘贴板!
为自动化中心配置存储后端,包括 Amazon S3、Azure Blob Storage 和 Network File System (NFS)存储。
2.7.3.1. 为自动化中心配置 Amazon S3 存储 复制链接链接已复制到粘贴板!
Amazon S3 存储是容器化安装支持的对象存储类型。使用 AWS S3 存储后端时,将 hub_storage_backend 设置为 s3。在运行安装程序前,AWS S3 存储桶需要存在。
流程
- 在继续安装前,请确保您的 AWS S3 存储桶存在。
在
[all:vars]组下的 inventory 文件中添加以下变量来配置 S3 存储:-
hub_s3_access_key -
hub_s3_secret_key -
hub_s3_bucket_name hub_s3_extra_settings您可以通过 Ansible
hub_s3_extra_settings字典传递额外的参数。例如:hub_s3_extra_settings: AWS_S3_MAX_MEMORY_SIZE: 4096 AWS_S3_REGION_NAME: eu-central-1 AWS_S3_USE_SSL: True
hub_s3_extra_settings: AWS_S3_MAX_MEMORY_SIZE: 4096 AWS_S3_REGION_NAME: eu-central-1 AWS_S3_USE_SSL: TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
2.7.3.2. 为自动化中心配置 Azure Blob Storage 复制链接链接已复制到粘贴板!
Azure Blob 存储是容器化安装支持的对象存储类型。使用 Azure blob 存储后端时,将 hub_storage_backend 设置为 azure。在运行安装程序前,Azure 容器需要存在。
流程
- 在继续安装前,请确保 Azure 容器存在。
将以下变量添加到
[all:vars]组下的清单文件中以配置 Azure Blob 存储:-
hub_azure_account_key -
hub_azure_account_name -
hub_azure_container hub_azure_extra_settings您可以通过 Ansible
hub_azure_extra_settings字典传递额外的参数。例如:hub_azure_extra_settings: AZURE_LOCATION: foo AZURE_SSL: True AZURE_URL_EXPIRATION_SECS: 60
hub_azure_extra_settings: AZURE_LOCATION: foo AZURE_SSL: True AZURE_URL_EXPIRATION_SECS: 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
2.7.3.3. 为自动化 hub 配置网络文件系统(NFS)存储 复制链接链接已复制到粘贴板!
NFS 是容器化安装支持的共享存储类型。当使用 文件 存储后端安装多个自动化中心实例时,需要共享存储。安装单一自动化中心实例时,共享存储是可选的。
流程
要为自动化中心配置共享存储,请在清单文件中设置
hub_shared_data_path变量:hub_shared_data_path=<path_to_nfs_share>
hub_shared_data_path=<path_to_nfs_share>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该值必须与格式
host:dir匹配,如nfs-server.example.com:/exports/hub。-
(可选)要更改 NFS 共享的挂载选项,请使用
hub_shared_data_mount_opts变量。默认值为rw,sync,hard。
2.7.4. 配置 HAProxy 负载均衡器 复制链接链接已复制到粘贴板!
要在平台网关前面使用自定义 CA 证书配置 HAProxy 负载均衡器,请在 [all:vars] 组下设置以下清单文件变量:
custom_ca_cert=<path_to_cert_crt> gateway_main_url=<https://load_balancer_url>
custom_ca_cert=<path_to_cert_crt>
gateway_main_url=<https://load_balancer_url>
平台网关不支持 HAProxy SSL passthrough 模式。
2.7.5. 启用自动化内容集合和容器签名 复制链接链接已复制到粘贴板!
默认禁用自动化内容签名。要启用它,清单文件需要以下安装变量:
如果密钥受密码短语保护,则需要以下变量:
# Collection signing hub_collection_signing_pass=<gpg_key_passphrase> # Container signing hub_container_signing_pass=<gpg_key_passphrase>
# Collection signing
hub_collection_signing_pass=<gpg_key_passphrase>
# Container signing
hub_container_signing_pass=<gpg_key_passphrase>
hub_collection_signing_key 和 hub_container_signing_key 变量需要在运行安装前设置密钥。
自动化内容签名目前只支持基于 GnuPG (GPG)的签名密钥。有关 GPG 的更多信息,请参阅 GnuPG 手册页。
使用的算法和密码由客户负责。
流程
在 RHEL9 服务器上运行以下命令为集合签名创建新密钥对:
gpg --gen-key
gpg --gen-keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 "Real name" 和 "Email address" 输入您的信息:
输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果此操作失败,则您的环境没有为 GPG 安装必要的先决条件软件包。安装所需的软件包以继续。
- 这时将出现一个对话框并要求您输入密码短语。这是可选的,但推荐使用。
然后生成密钥,并生成类似如下的输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您可以根据公司标准和需求设置的到期日期。
您可以运行以下命令来查看所有 GPG 密钥:
gpg --list-secret-keys --keyid-format=long
gpg --list-secret-keys --keyid-format=longCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要导出公钥,请运行以下命令:
gpg --export -a --output collection-signing-key.pub <email_address_used_to_generate_key>
gpg --export -a --output collection-signing-key.pub <email_address_used_to_generate_key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要导出私钥,请运行以下命令:
gpg -a --export-secret-keys <email_address_used_to_generate_key> > collection-signing-key.priv
gpg -a --export-secret-keys <email_address_used_to_generate_key> > collection-signing-key.privCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果检测到密码短语,系统将提示您输入密码短语。
要查看私钥文件内容,请运行以下命令:
cat collection-signing-key.priv
cat collection-signing-key.privCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重复步骤 1 到 9,以创建用于容器签名的密钥对。
在清单文件中添加以下变量并运行安装来创建签名服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.6. 设置客户提供的数据库 复制链接链接已复制到粘贴板!
设置外部数据库时有两种场景:
- 具有 PostgreSQL 管理员凭证的外部数据库
- 没有 PostgreSQL 管理员凭证的外部数据库
- 在 Ansible Automation Platform 中使用外部数据库时,您必须创建和维护该数据库。在卸载 Ansible Automation Platform 时,请确保清除外部数据库。
- Red Hat Ansible Automation Platform 要求客户提供(外部)数据库才能获得 ICU 支持。
- 在配置外部数据库期间,您必须检查外部数据库覆盖。如需更多信息,请参阅 Red Hat Ansible Automation Platform 数据库的支持覆盖范围。
2.7.6.1. 使用 PostgreSQL 管理员凭证设置外部数据库 复制链接链接已复制到粘贴板!
如果您有 PostgreSQL admin 凭证,您可以在清单文件中提供它们,安装程序会为您创建 PostgreSQL 用户和数据库。PostgreSQL admin 帐户必须具有 SUPERUSER 特权。
流程
要配置 PostgreSQL admin 凭证,请在
[all:vars]组下的清单文件中添加以下变量:postgresql_admin_username=<set your own> postgresql_admin_password=<set your own>
postgresql_admin_username=<set your own> postgresql_admin_password=<set your own>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.6.2. 设置没有 PostgreSQL 管理员凭证的外部数据库 复制链接链接已复制到粘贴板!
如果您没有 PostgreSQL admin 凭证,则需要在运行安装程序前为每个组件(平台网关、自动化控制器、自动化中心和 Ansible)创建 PostgreSQL 用户和密码。
流程
使用具有
SUPERUSER特权的用户连接到兼容 PostgreSQL 的数据库服务器。psql -h <hostname> -U <username> -p <port_number>
# psql -h <hostname> -U <username> -p <port_number>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
psql -h db.example.com -U superuser -p 5432
# psql -h db.example.com -U superuser -p 5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用密码创建用户,并确保将
CREATEDB角色分配给该用户。如需更多信息,请参阅 数据库角色。CREATE USER <username> WITH PASSWORD <password> CREATEDB;
CREATE USER <username> WITH PASSWORD <password> CREATEDB;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建数据库并添加您创建的用户作为所有者。
CREATE DATABASE <database_name> OWNER <username>;
CREATE DATABASE <database_name> OWNER <username>;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为各个组件创建 PostgreSQL 用户和数据库后,您可以在
[all:vars]组下的清单文件中提供它们。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.6.3. 为自动化中心 PostgreSQL 数据库启用 hstore 扩展 复制链接链接已复制到粘贴板!
数据库迁移脚本使用 hstore 字段来存储信息,因此在自动化中心 PostgreSQL 数据库中必须启用 hstore 扩展。
使用 Ansible Automation Platform 安装程序和受管 PostgreSQL 服务器时,此过程是自动的。
如果 PostgreSQL 数据库是外部的,则必须在安装前在自动化中心 PostgreSQL 数据库中手动启用 hstore 扩展。
如果在安装过程中没有启用 hstore 扩展,在数据库迁移过程中会出现一个失败。
流程
检查 PostgreSQL 服务器上是否有扩展(自动化 hub 数据库)。
psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
$ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<automation hub database>的默认值为automationhub。带有
hstore可用的输出示例 :name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version |comment ------+-----------------+-------------------+--------------------------------------------------- hstore | 1.7 | | data type for storing sets of (key, value) pairs (1 row)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有
hstore不可用的输出示例 :name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)
name | default_version | installed_version | comment ------+-----------------+-------------------+--------- (0 rows)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在基于 RHEL 的服务器上,
hstore扩展包含在postgresql-contribRPM 软件包中,该软件包在安装 PostgreSQL 服务器 RPM 软件包时不会自动安装。要安装 RPM 软件包,请使用以下命令:
dnf install postgresql-contrib
dnf install postgresql-contribCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令将
hstorePostgreSQL 扩展加载到自动化中心数据库中:psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
$ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下输出中,
installed_version字段列出了使用的hstore扩展,表示启用了hstore。name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)
name | default_version | installed_version | comment -----+-----------------+-------------------+------------------------------------------------------ hstore | 1.7 | 1.7 | data type for storing sets of (key, value) pairs (1 row)Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.6.4. 可选:为外部数据库配置 mutual TLS (mTLS)身份验证 复制链接链接已复制到粘贴板!
默认禁用 mTLS 身份验证。要使用 mTLS 身份验证配置每个组件的数据库,请将以下变量添加到 [all:vars] 组下,并确保每个组件都有不同的 TLS 证书和密钥:
流程
将以下变量添加到清单文件中的
[all:vars]组:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.7. 使用自定义 TLS 证书 复制链接链接已复制到粘贴板!
Red Hat Ansible Automation Platform 使用 X.509 证书和密钥对在 Ansible Automation Platform 组件和外部内部保护流量,以进行公共 UI 和 API 连接。
管理 Ansible Automation Platform 部署的 TLS 证书主要有两种方法:
- Ansible Automation Platform 生成的证书(这是默认设置)
- 用户提供的证书
2.7.7.1. Ansible Automation Platform 生成的证书 复制链接链接已复制到粘贴板!
默认情况下,安装程序会创建一个自签名证书颁发机构(CA),并使用它来为所有 Ansible Automation Platform 服务生成自签名 TLS 证书。自签名 CA 证书和密钥在 ~/aap/tls/ 目录下的一个节点上生成,并复制到所有其他节点上的相同位置。此 CA 在初始创建日期后的 10 年内有效。
自签名证书不是任何公共信任链的一部分。安装程序会创建一个证书信任存储,其中包含 ~/aap/tls/extracted/ 下的自签名 CA 证书,并将该目录绑定到 /etc/pki/ca-trust/extracted/ 下的每个 Ansible Automation Platform 服务容器。这允许每个 Ansible Automation Platform 组件验证其他 Ansible Automation Platform 服务的自签名证书。CA 证书也可以根据需要添加到其他系统或浏览器的信任存储中。
2.7.7.2. 用户提供的证书 复制链接链接已复制到粘贴板!
要使用您自己的 TLS 证书和密钥替换在安装过程中生成的部分或所有自签名证书,您可以在清单文件中设置特定的变量。这些证书和密钥必须提前由公共或机构 CA 生成,以便在安装过程中可用。
2.7.7.2.1. 使用自定义 CA 生成所有 TLS 证书 复制链接链接已复制到粘贴板!
当您希望 Ansible Automation Platform 生成所有证书时,使用此方法,但您希望由自定义 CA 签名,而不是默认的自签名证书。
流程
要使用自定义证书颁发机构(CA)为所有 Ansible Automation Platform 服务生成 TLS 证书,请在清单文件中设置以下变量:
ca_tls_cert=<path_to_ca_tls_certificate> ca_tls_key=<path_to_ca_tls_key>
ca_tls_cert=<path_to_ca_tls_certificate> ca_tls_key=<path_to_ca_tls_key>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.7.2.2. 为每个服务提供自定义 TLS 证书 复制链接链接已复制到粘贴板!
如果您的机构在 Ansible Automation Platform 之外管理 TLS 证书,且需要手动置备,则使用此方法。
流程
要手动为每个单个服务提供 TLS 证书(如自动化控制器、自动化中心和 Event-Driven Ansible),请在清单文件中设置以下变量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7.7.2.3. 每个服务提供的证书的注意事项 复制链接链接已复制到粘贴板!
在为每个服务提供自定义 TLS 证书时,请考虑以下几点:
-
每个主机可以提供唯一的证书。这需要在您的清单文件中定义特定的
_tls_cert和_tls_key变量,如前面的清单文件示例所示。 - 对于在多个节点间部署的服务(例如,遵循企业拓扑时),该服务提供的证书必须在 Subject Alternative Name (SAN)字段中包括所有关联节点的 FQDN。
- 如果在执行 SSL/TLS 卸载的负载均衡器后面部署了面向外部的服务(如自动化控制器或平台网关),则服务的证书必须在 SAN 字段中包含负载均衡器的 FQDN,除了单个服务节点的 FQDN 外。
2.7.7.2.4. 提供自定义 CA 证书 复制链接链接已复制到粘贴板!
手动提供 TLS 证书时,这些证书可能由自定义 CA 签名。提供自定义 CA 证书,以确保环境中正确验证和安全通信。如果您有多个自定义 CA 证书,则必须将它们合并到一个文件中。
流程
如果您手动提供的 TLS 证书由自定义 CA 签名,则必须使用清单文件中的以下变量指定 CA 证书:
custom_ca_cert=<path_to_custom_ca_certificate>
custom_ca_cert=<path_to_custom_ca_certificate>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您有多个 CA 证书,请将它们组合到一个文件中,并使用
custom_ca_cert变量引用组合证书。
2.7.7.3. receptor 证书注意事项 复制链接链接已复制到粘贴板!
当将自定义证书用于 Receptor 节点时,证书需要在证书的 Subject Alternative Name (SAN)中指定的 otherName 字段,其值为 1.3.6.1.4.1.2312.19.1。如需更多信息,请参阅 获取网格 TLS。
receptor 不支持使用通配符证书。另外,每个 Receptor 证书都必须在其 SAN 中指定主机 FQDN,才能正确执行 TLS 主机名验证。
2.7.7.4. Redis 证书注意事项 复制链接链接已复制到粘贴板!
当为 Redis 相关的服务使用自定义 TLS 证书时,如果指定扩展密钥 Usage (EKU),请考虑以下用于 mutual TLS (mTLS)通信:
-
Redis 服务器证书(
redis_tls_cert)应包含serverAuth(Web 服务器身份验证)和clientAuth(客户端身份验证) EKU。 -
Redis 客户端证书(
gateway_redis_tls_cert,eda_redis_tls_cert)应包含clientAuth(客户端身份验证) EKU。
2.7.8. 使用自定义 Receptor 签名密钥 复制链接链接已复制到粘贴板!
receptor 签名会被默认启用,除非设置了 receptor_disable_signing=true,且安装程序生成 RSA 密钥对(public 和 private)。但是,您可以使用以下变量设置自定义 RSA 公钥和私钥:
receptor_signing_private_key=<full_path_to_private_key> receptor_signing_public_key=<full_path_to_public_key>
receptor_signing_private_key=<full_path_to_private_key>
receptor_signing_public_key=<full_path_to_public_key>