操作 Ansible Automation Platform
安装后配置,以确保平稳部署 Ansible Automation Platform 安装
摘要
前言 复制链接链接已复制到粘贴板!
安装 Red Hat Ansible Automation Platform 后,您的系统可能需要额外的配置,以确保您的部署平稳运行。本指南为配置任务提供在安装 Red Hat Ansible Automation Platform 后可以执行的操作。
免责声明 :这些信息中包含的指向外部网站的链接仅用于方便用户。红帽没有审阅链接的内容,并不对其内容负责。包含任何指向外部网站的链接并不表示红帽认可该网站或其实体、产品或服务。您同意红帽对因您使用(或依赖)外部网站或内容而导致的任何损失或费用不承担任何责任。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
如果您对本文档有任何改进建议,或发现错误,请通过 https://access.redhat.com 联系技术支持来创建一个请求。
第 1 章 激活 Red Hat Ansible Automation Platform 复制链接链接已复制到粘贴板!
如果您是机构管理员,您必须创建一个服务帐户, 并使用客户端 ID 和客户端 secret 激活您的订阅。
如果您没有管理访问权限,您可以在 Client ID 和 Client secret 字段中输入红帽用户名和密码,以在 Ansible Automation Platform 实例中查找并添加到 Ansible Automation Platform 实例中。
如果您输入客户端 ID 和客户端 secret,但无法找到订阅,您可能没有在服务帐户上设置正确的权限。有关服务帐户的更多信息和故障排除指南,请参阅配置 Ansible Automation Platform 以通过服务帐户凭证进行身份验证。
对于 Red Hat Satellite,请在以下字段中输入您的 Satellite 用户名和密码。
Red Hat Ansible Automation Platform 使用可用的订阅或订阅清单来授权使用 Ansible Automation Platform。要获取订阅,您可以执行以下操作之一:
- 启动 Ansible Automation Platform 时,请使用您的红帽用户名和密码、服务帐户凭证或 Satellite 凭证。
- 使用 Red Hat Ansible Automation Platform 界面或手动在 Ansible Playbook 中上传订阅清单文件。
要使用凭证激活 Ansible Automation Platform,请参阅使用凭证激活。
要使用清单文件激活 Ansible Automation Platform,请参阅 激活清单文件。
第 2 章 配置 Red Hat Ansible Automation Platform 的代理支持 复制链接链接已复制到粘贴板!
您可以配置 Red Hat Ansible Automation Platform,以使用代理与流量通信。代理服务器充当来自其他服务器的客户机用于请求查找资源的请求的中介。客户端连接到代理服务器,请求不同的服务器提供某些服务或可用资源,代理服务器会评估请求,以简化和控制其复杂性。以下小节描述了支持的代理配置以及如何设置它们。
2.1. 通过负载均衡器启用代理支持 复制链接链接已复制到粘贴板!
转发代理处理客户端流量,隔离和保护它。为了提供代理服务器支持,自动化控制器使用自动化控制器设置中的 REMOTE_HOST_HEADERS 列表变量处理代理请求(如 ALB、NLB、HAProxy、Squid、Nginx 和 tinyproxy)。默认情况下,REMOTE_HOST_HEADERS 设置为 ["REMOTE_ADDR", "REMOTE_HOST"]。
要启用代理服务器支持,请在自动化控制器的设置页面中编辑 REMOTE_HOST_HEADERS 字段:
流程
- 在导航面板中,选择 → → 。
- 点
在 Remote Host Headers 字段中,输入以下值:
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 保存您的设置。
自动化控制器通过搜索 Remote Host Headers 中的标头列表来确定远程主机的 IP 地址,直到第一个 IP 地址所在的 IP 地址为止。
2.2. 已知的代理 复制链接链接已复制到粘贴板!
当自动化控制器配置有 REMOTE_HOST_HEADERS = ['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST'] 时,它假定 X-Forwarded-For 的值源自 Tower 前面的代理/负载均衡器。如果自动化控制器可以在不使用代理/负载均衡器的情况下访问,或者代理没有验证标头,那么 X-Forwarded-For 的值可以被断断为原始 IP 地址。
在 REMOTE_HOST_HEADERS 设置中使用 HTTP_X_FORWARDED_FOR 可能会存在安全漏洞。
要避免这种情况,您可以配置允许的已知代理列表。
流程
- 在导航面板中,选择 → → 。
在 Proxy IP Allowed List 字段中输入服务应该信任自定义远程标头值的代理 IP 地址列表。
注意不在已知代理列表上的负载均衡器和主机会导致请求被拒绝。
2.2.1. 配置已知的代理 复制链接链接已复制到粘贴板!
要为自动化控制器配置已知代理列表,请将代理 IP 地址添加到 System Settings 页面中的 Proxy IP Allowed List 字段中。
流程
- 在导航面板中,选择 → → 。
在 Proxy IP Allowed List 字段中,使用以下示例的语法输入允许连接到您的自动化控制器的 IP 地址:
代理 IP 允许列表条目 示例
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]
[ "example1.proxy.com:8080", "example2.proxy.com:8080" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要-
代理 IP 允许列表需要列表中的代理正确清理标头输入,并正确设置
X-Forwarded-For值等于客户端的实际源 IP。自动化控制器可以依赖 Proxy IP Allowed List 中的 IP 地址和主机名来为X-Forwarded-For提供非欺骗的值。 不要将
HTTP_X_FORWARDED_FOR配置为 Remote Host Headers 中的项目,除非满足以下条件:- 您使用带有 ssl 终止的代理环境;
-
代理提供
X-Forwarded-For标头的清理或验证处理,以防止客户端欺骗; -
/etc/tower/conf.d/remote_host_headers.py定义PROXY_IP_ALLOWED_LIST,它只包含可信代理或负载均衡器的原始 IP 地址。
-
代理 IP 允许列表需要列表中的代理正确清理标头输入,并正确设置
- 点 保存设置。
2.3. 通过负载均衡器配置反向代理 复制链接链接已复制到粘贴板!
反向代理管理对服务器的外部请求,为添加的安全性提供负载平衡和规范服务器身份。您可以通过将 HTTP_X_FORWARDED_FOR 添加到 Systems 设置中的 Remote Host Headers 字段来支持反向代理服务器配置。X-Forwarded-For (XFF) HTTP 标头字段标识通过 HTTP 代理或负载平衡器连接到 Web 服务器的客户端的原始 IP 地址。
流程
- 在导航面板中,选择 → → 。
在 Remote Host Headers 字段中,输入以下值:
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]
[ "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR", "REMOTE_HOST" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将下面的行添加到
/etc/tower/conf.d/custom.py中,以确保应用程序使用正确的标头:USE_X_FORWARDED_PORT = True USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = True USE_X_FORWARDED_HOST = TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 保存设置。
2.4. 启用粘性会话 复制链接链接已复制到粘贴板!
默认情况下,应用程序负载均衡器会根据所选负载均衡算法将每个请求独立路由到注册的目标。为了避免在负载均衡器后面运行多个自动化中心实例时出现身份验证错误,您必须启用粘性会话。启用粘性会话会设置自定义应用程序 Cookie,它与负载均衡器中配置的 Cookie 匹配,以启用粘性。此自定义 Cookie 可以包含应用程序所需的任何 Cookie 属性。
第 3 章 配置 Ansible Automation Platform 以使用出口代理 复制链接链接已复制到粘贴板!
您可以部署 Ansible Automation Platform,以便通过代理服务器正常工作的平台中的出口。出口代理允许客户端向网络服务发出间接(通过代理服务器)请求。客户端首先连接到代理服务器,并请求一些资源,如位于其他服务器上的电子邮件。然后,代理服务器连接到指定的服务器,并从中检索资源。
3.1. 概述 复制链接链接已复制到粘贴板!
对于所有 RPM 和容器化安装方法,应在系统和 Ansible Automation Platform 组件级别配置出口代理。对于容器化安装程序,节点上 podman 的系统代理配置解决了通过代理访问大多数问题。对于 RPM 安装,同时需要系统和组件配置。
3.1.1. 代理后端 复制链接链接已复制到粘贴板!
对于 HTTP 和 HTTPS 代理,您可以使用 squid 服务器。Squid 是 Web 支持的 HTTP、HTTPS 和 FTP 的转发代理,通过缓存并重复使用频繁请求的网页来减少带宽并改进了响应时间。它根据 GNU GPL 许可。转发代理是截获网络流量进入另一网络(通常是互联网)的系统,并代表内部系统发送它。squid 代理允许所有必需的通信通过它。
确保 squid 代理后端上打开了所有必需的 Ansible Automation Platform control plane 端口。Ansible Automation Platform 特定端口:
以下端口用于容器化安装:
3.2. 系统代理配置 复制链接链接已复制到粘贴板!
出站代理在 control plane 中所有节点的系统级别配置。
必须设置以下环境变量:
http_proxy=“http://external-proxy_0:3128” https_proxy=“http://external-proxy_0:3128” no_proxy=“localhost,127.0.0.0/8,10.0.0.0/8”
http_proxy=“http://external-proxy_0:3128”
https_proxy=“http://external-proxy_0:3128”
no_proxy=“localhost,127.0.0.0/8,10.0.0.0/8”
您还可以将这些变量添加到 /etc/environment 文件中,使它们永久保留。
安装程序确保在安装过程中所有外部通信都通过代理。对于容器化安装,这些变量可确保 podman 使用出口代理。
3.3. 自动化控制器设置 复制链接链接已复制到粘贴板!
使用 RPM 安装程序后,您必须将自动化控制器配置为使用出口代理。
容器化安装程序不需要这样做,因为 podman 使用系统配置代理并将所有容器流量重定向到代理。
对于自动化控制器,在 /api/v2/settings/ 中设置 AWX_TASK_ENV 变量。要通过 UI 完成此操作,请使用以下步骤:
流程
- 在导航面板中,选择 → → 。
- 点 。
在 Extra Environment Variables 字段中添加变量
并设置:
"AWX_TASK_ENV": { "http_proxy": "http://external-proxy_0:3128", "https_proxy": "http://external-proxy_0:3128", "no_proxy": "localhost,127.0.0.0/8" }"AWX_TASK_ENV": { "http_proxy": "http://external-proxy_0:3128", "https_proxy": "http://external-proxy_0:3128", "no_proxy": "localhost,127.0.0.0/8" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.1. 使用 SSH 配置 SCM 项目同步,以便与自动化控制器中的代理一起工作 复制链接链接已复制到粘贴板!
基于 RPM 的 Ansible Automation Platform 的步骤描述了如何使用自动化控制器项目同步,方法是使用 SSH 协议与代理服务器一起工作。
流程
在自动化控制器节点上执行以下步骤。如果尚未安装 ansible-builder,请先安装它。
subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms dnf install ansible-builder
# subscription-manager repos --enable ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms # dnf install ansible-builderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建自定义执行环境。
首先,创建一个工作目录:
su - awx mkdir -p builder/newee cd builder/newee
# su - awx $ mkdir -p builder/newee $ cd builder/neweeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下内容创建
execution-environment.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到 registry.redhat.io。
podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 ansible-builder 以开始构建过程。
cd /var/lib/awx/builder/newee/ ansible-builder build -t my-env -v 3
$ cd /var/lib/awx/builder/newee/ $ ansible-builder build -t my-env -v 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 添加您创建的自定义执行环境。
- 在导航面板中,选择 → → 。
- 单击 。
-
在 Image 字段中,添加
localhost/my-env:latest。 - 单击 。
按照以下步骤重新运行 Ansible Automation Platform 安装程序,将执行环境从默认改为将用作项目同步的自定义环境。
注意在运行安装程序前备份 Ansible Automation Platform。
./setup.sh -b
# ./setup.sh -bCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在与
setup.sh文件相同的位置的group_vars目录下创建一个automationcontroller文件。文件内容如下:control_plane_execution_environment: localhost/my-env
control_plane_execution_environment: localhost/my-envCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
setup.sh./setup.sh
# ./setup.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 目录下创建
ssh_config。例如:Host github.com Hostname ssh.github.com ProxyCommand nc --proxy-type http --proxy proxy.example.com:port %h %p User git
Host github.com Hostname ssh.github.com ProxyCommand nc --proxy-type http --proxy proxy.example.com:port %h %p User gitCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 PATH 中添加
ssh_config文件的目录路径,以公开隔离的作业,以便容器执行环境可以读取ssh_config文件。 - 在导航面板中,选择 → → 。
- 点 。
如果
ssh_config文件已创建为/var/lib/awx/.ssh/ssh_config,请将此文件添加到要 公开给隔离作业的 Path注意确保
ssh_config归 AWX 用户所有。( Configurechown awx:awx /var/lib/awx/.ssh/ssh_config)[ "/var/lib/awx/.ssh:/etc/ssh:O" ]
[ "/var/lib/awx/.ssh:/etc/ssh:O" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. 为 AWS 清单同步启用可配置的代理环境 复制链接链接已复制到粘贴板!
要为 AWS 清单同步启用可配置的代理环境,您可以手动编辑覆盖配置文件或在平台 UI 中设置配置:
手动编辑
/usr/lib/systemd/system/receptor.service.d/override.conf,并在其中添加以下http_proxy环境变量:http_proxy:<value> https_proxy:<value> proxy_username:<value> Proxy_password:<value>
http_proxy:<value> https_proxy:<value> proxy_username:<value> Proxy_password:<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者
- 要通过 UI 完成此操作,请使用以下步骤:
流程
- 在导航面板中,选择 → → 。
- 点 。
在 Extra Environment Variables 字段中添加变量
例如:*
"AWX_TASK_ENV": {
"no_proxy": "localhost,127.0.0.0/8,10.0.0.0/8",
"http_proxy": "http://proxy_host:3128/",
"https_proxy": "http://proxy_host:3128/"
},
"AWX_TASK_ENV": {
"no_proxy": "localhost,127.0.0.0/8,10.0.0.0/8",
"http_proxy": "http://proxy_host:3128/",
"https_proxy": "http://proxy_host:3128/"
},
3.5. 在自动化中心中配置代理设置 复制链接链接已复制到粘贴板!
如果您的私有自动化中心位于网络代理后面,您可以在远程上配置代理设置,以同步位于本地网络之外的内容。
先决条件
- 您有修改 Ansible 存储库内容的权限。有关权限的更多信息,请参阅 访问管理和身份验证。
您有一个
requirements.yml文件,用于标识要从 Ansible Galaxy 同步的集合,如下例所示:Requirements.yml 示例
collections: # Install a collection from Ansible Galaxy. - name: community.aws version: 5.2.0 source: https://galaxy.ansible.comcollections: # Install a collection from Ansible Galaxy. - name: community.aws version: 5.2.0 source: https://galaxy.ansible.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
- 登录到 Ansible Automation Platform。
- 在导航面板中,选择 → 。
- 在 Community remote 的 Details 选项卡中,点 。
-
在 YAML requirements 字段中,粘贴
requirements.yml文件的内容。 - 单击 。
结果
现在,您可以将 requirements.yml 文件中标识的集合从 Ansible Galaxy 同步到私有自动化中心。
后续步骤
3.6. 在 Event-Driven Ansible 上配置代理设置 复制链接链接已复制到粘贴板!
对于 Event-Driven Ansible,没有设置代理的全局设置。您必须为每个项目指定代理。
流程
- 在导航面板中,选择 → 。
- 点
使用 Proxy 字段。
3.7. 为自动化网格配置代理设置 复制链接链接已复制到粘贴板!
您可以通过代理服务器从自动化网格节点上的 receptor 路由出站通信。如果您的代理没有剥离 TLS 证书,则 Ansible Automation Platform 安装会自动支持使用代理服务器。
网格上的每个节点都必须有一个认证授权者,安装程序代表您创建该授权。
Certifying Authority 的默认安装位置是:
/etc/receptor/tls/ca/mesh-CA.crt
代表您创建的证书和密钥将 nodeID 用作其名称:
对于证书: /etc/receptor/tls/NODEID.crt
对于密钥: /etc/receptor/tls/NODEID.key
第 4 章 高级配置 复制链接链接已复制到粘贴板!
作为平台管理员,您可以实施高级配置来自定义 Ansible Automation Platform,包括数据库连接、日志记录、缓存和 gRPC 服务器参数。
4.1. settings.py 文件 复制链接链接已复制到粘贴板!
作为平台管理员,您可以修改 settings.py 文件来配置 Ansible Automation Platform 的各个方面,如数据库连接、日志记录配置、缓存等。
有两个 文件:作为代码库一部分的默认设置.py,且不能编辑,以及一个可用于覆盖默认值的覆盖文件。
settings.py
覆盖 settings.py 文件的位置和管理可能会根据您的部署而有所不同(基于RPM、基于容器的安装或基于 operator 的安装)。
4.1.1. RPM 部署 复制链接链接已复制到粘贴板!
可以直接编辑基于 RPM 的设置中的覆盖 settings.py 文件,并在重启平台网关服务后生效。如果您选择编辑文件,请务必使用正确的语法和值。覆盖 settings.py 文件位于以下目录中:
/etc/ansible-automation-platform/gateway/settings.py
/etc/ansible-automation-platform/gateway/settings.py
4.1.2. 基于容器的部署 复制链接链接已复制到粘贴板!
对于基于容器的安装部署,Ansible Automation Platform 在容器内运行,并且设置.py 文件包含在容器中。但是,不建议直接在基于容器的安装部署中编辑 settings.py 文件,因为在升级过程中会覆盖 settings.py 文件。
要在基于容器的安装部署中自定义设置,您可以使用 extra_settings 参数来确保自定义通过安装程序更新保留。如需更多信息,请参阅容器化安装指南中的清单文件变量。https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/containerized_installation/appendix-inventory-files-vars
4.1.3. 基于 Operator 的部署 复制链接链接已复制到粘贴板!
对于基于 operator 的安装部署,settings.py 文件通常位于容器中,但用户无法直接修改容器中的 settings.py 文件,因为 Red Hat OpenShift Container Platform 中的容器是只读的。
相反,对于基于 Operator 的部署,您可以使用 Ansible Automation Platform 自定义资源上的 spec.extra_settings 参数修改平台网关的设置。
4.2. grpc_settings.py 文件 复制链接链接已复制到粘贴板!
平台管理员可以使用 grpc_settings.py 文件为 gRPC 服务器定义特殊或自定义参数。
有两个 gRPC 设置文件:默认的 grpc_default.py 是代码库的一部分,不得被编辑,以及一个可用于覆盖默认值的覆盖文件。grpc_default.py 文件包含数据库 keepalive OPTIONS,以帮助维护健康的 gRPC 连接并防止中断。如果需要更改这些默认值,可以使用 grpc_settings.py 文件来覆盖 grpc_defauly.py 文件中的值。
覆盖 grpc_settings.py 文件的位置和管理可能会根据您的部署(基于RPM、基于容器的安装或基于 operator 的安装)而有所不同。
4.2.1. RPM 部署 复制链接链接已复制到粘贴板!
可以直接编辑基于 RPM 的设置中的 override grpc_settings.py 文件,并在重启网关 systemd 服务后生效。如果您选择编辑文件,请务必使用正确的语法和值。override grpc_settings.py 文件位于以下目录中:
/etc/ansible-automation-platform/gateway/grpc_settings.py
/etc/ansible-automation-platform/gateway/grpc_settings.py
4.2.2. 修改 grpc_settings.py 文件的影响 复制链接链接已复制到粘贴板!
gRPC 服务器负责在不同平台服务间进行身份验证。更改 grpc_settings.py 文件中的设置可能会显著影响 gRPC 连接的行为和性能,特别是在连接稳定性方面。
在部署到生产环境之前,务必要全面测试对 gRPC 设置所做的任何更改,以确保 gRPC 服务器按预期工作。
4.3. 加载设置顺序 复制链接链接已复制到粘贴板!
平台网关使用 Dynaconf 库来管理其应用程序设置。dynaconf 遵循一种分层配置方法,其中设置以定义的顺序从多个源加载,之后的源覆盖较早的源。Ansible Automation Platform 按照以下序列加载设置:
- 应用程序 settings.py : 此文件位于应用本身中,并定义其他设置文件的加载顺序和位置。
- 应用程序默认设置: 平台从 defaults.py 文件中加载默认设置,该文件是应用程序本身的一部分。此文件包括 API 服务器和 gRPC 服务器的通用配置。
-
客户覆盖文件:
/etc/ansible-automation-platform/gateway/settings.py文件会被自动安装,并可用于覆盖defaults.py中的任何配置。对此文件的更改同时会影响 API 和 gRPC 服务器。 -
应用程序 gRPC 默认设置: 客户覆盖文件后,应用程序只从
grpc_default.py文件中加载 gRPC 服务器的额外默认设置。具体来说,此文件包括 gRPC 服务器的数据库 OPTIONS,如 keepalive 参数。 -
客户 gRPC 覆盖文件:文件
/etc/ansible-automation-platform/gateway/grpc_settings.py(如果存在),下一个载入该文件中包含的任何设置都只适用于 gRPC 服务器。 -
平台覆盖设置文件:
/etc/ansible-automation-platform/settings.py文件中的任何设置都应用到 gRPC 服务器和 API 服务器。如果单个节点上有多个 Ansible Automation Platform 服务,则此文件中的项目将应用到所有服务。 - ENV vars: 环境变量,您可以在其中配置配置文件之外的某些 Ansible Automation Platform 设置。它们覆盖任何之前加载的设置。
第 5 章 从自动化控制器管理可用性分析和数据收集 复制链接链接已复制到粘贴板!
您可以通过在自动化控制器用户界面中不使用或更改您的设置,改变来自自动化控制器控制器的可用性分析和数据收集。
5.1. 可用性分析和数据收集 复制链接链接已复制到粘贴板!
自动化控制器包括可用性数据收集,以便更好地了解自动化控制器用户如何与自动化控制器进行交互,以帮助增强未来版本,并持续简化您的用户体验。
只有安装自动化控制器试用或全新安装自动化控制器的用户才会选择使用此数据收集。
5.1.1. 控制自动化控制器的数据收集 复制链接链接已复制到粘贴板!
您可以控制自动化控制器如何从 → → 菜单收集数据。
流程
- 登录到您的自动化控制器。
- 在导航面板中,选择 → → 。
- 选择 Automation Analytics 的 Gather 数据,以启用自动化控制器在自动化上收集数据并将其发送到 Automation Analytics。
第 6 章 续订和更改 SSL/TLS 证书 复制链接链接已复制到粘贴板!
如果您的当前 SSL/TLS 证书已过期或很快过期,您可以续订或替换 Ansible Automation Platform 使用的 SSL/TLS 证书。
如果您需要使用新信息(如新主机)重新生成它们,则必须续订 SSL/TLS 证书。
如果要使用内部证书颁发机构签名的证书,您必须替换 SSL/TLS 证书。
6.1. 基于容器的安装 复制链接链接已复制到粘贴板!
您可以更改基于容器的 Ansible Automation Platform 安装的 TLS 证书和密钥。这个过程涉及一个准备步骤,提供新的自定义证书、删除或移动旧证书,然后运行安装程序。
6.1.1. 使用安装程序更改 TLS 证书和密钥 复制链接链接已复制到粘贴板!
以下流程描述了如何使用安装程序更新 TLS 证书和密钥。
流程
要准备证书和密钥,请选择以下方法之一:
要提供自定义证书 - 对于需要更新的 TLS 证书的每个服务,请将新证书和密钥复制到相对于 Ansible Automation Platform 安装程序的路径。然后,使用新文件的绝对路径更新清单文件变量。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要生成新的证书 - 如果您希望安装程序为服务生成新证书,请删除或移动现有证书和密钥。
Expand 表 6.1. 每个服务的证书和密钥文件路径 服务 证书文件路径 密钥文件路径 自动化控制器
~/aap/controller/etc/tower.cert~/aap/controller/etc/tower.keyEvent-Driven Ansible
~/aap/eda/etc/eda.cert~/aap/eda/etc/eda.key平台网关
~/aap/gateway/etc/gateway.cert~/aap/gateway/etc/gateway.keyAutomation hub
~/aap/hub/etc/pulp.cert~/aap/hub/etc/pulp.keyPostgreSQL
~/aap/postgresql/server.crt~/aap/postgresql/server.keyReceptor
~/aap/receptor/etc/receptor.crt~/aap/receptor/etc/receptor.keyRedis
~/aap/redis/server.crt~/aap/redis/server.key
准备证书后,从
安装目录中运行安装 playbook:ansible-playbook -i <inventory_file_name> ansible.containerized_installer.install
ansible-playbook -i <inventory_file_name> ansible.containerized_installer.installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
通过检查服务是否正在运行并可以访问,验证新的 TLS 证书是否正在使用。要做到这一点,使用 curl 检查特定端点:
curl -vk https://<hostname_or_ip>:<port_number>/api/v2/
$ curl -vk https://<hostname_or_ip>:<port_number>/api/v2/
此命令的输出提供有关 TLS 握手的详细信息。查找以下输出以确认使用了正确的证书:
* SSL certificate verify OK
* SSL certificate verify OK
6.2. 基于 Operator 的安装 复制链接链接已复制到粘贴板!
以下流程描述了如何为 OpenShift Container Platform 上运行的自动化控制器更改 SSL 证书和密钥。
流程
- 将签名的 SSL 证书和密钥复制到安全位置。
在 OpenShift 中创建 TLS secret:
oc create secret tls ${CONTROLLER_INSTANCE}-certs-$(date +%F) --cert=/path/to/ssl.crt --key=/path/to/ssl.keyoc create secret tls ${CONTROLLER_INSTANCE}-certs-$(date +%F) --cert=/path/to/ssl.crt --key=/path/to/ssl.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改自动化控制器自定义资源,将
route_tls_secret和新 secret 的名称添加到 spec 部分。oc edit automationcontroller/${CONTROLLER_INSTANCE}oc edit automationcontroller/${CONTROLLER_INSTANCE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... spec: route_tls_secret: automation-controller-certs-2023-04-06 ...
... spec: route_tls_secret: automation-controller-certs-2023-04-06 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
TLS secret 的名称是任意的。在本例中,它的时间戳为创建 secret 的日期,以便将其与应用到自动化控制器实例的其他 TLS secret 进行区分。
- 等待几分钟,以便应用更改。
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以下流程描述了如何更改在 OpenShift Container Platform 上运行的自动化中心的 SSL 证书和密钥。
流程
- 将签名的 SSL 证书和密钥复制到安全位置。
在 OpenShift 中创建 TLS secret:
oc create secret tls ${AUTOMATION_HUB_INSTANCE}-certs-$(date +%F) --cert=/path/to/ssl.crt --key=/path/to/ssl.keyoc create secret tls ${AUTOMATION_HUB_INSTANCE}-certs-$(date +%F) --cert=/path/to/ssl.crt --key=/path/to/ssl.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改自动化中心自定义资源,将
route_tls_secret和新 secret 的名称添加到 spec 部分。oc edit automationhub/${AUTOMATION_HUB_INSTANCE}oc edit automationhub/${AUTOMATION_HUB_INSTANCE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... spec: route_tls_secret: automation-hub-certs-2023-04-06 ...
... spec: route_tls_secret: automation-hub-certs-2023-04-06 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
TLS secret 的名称是任意的。在本例中,会使用创建 secret 的日期的时间戳,将其与应用到自动化中心实例的其他 TLS secret 分开。
- 等待几分钟,以便应用更改。
验证是否安装了新的 SSL 证书和密钥:
true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443true | openssl s_client -showcerts -connect ${CONTROLLER_FQDN}:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. 基于 RPM 的安装 复制链接链接已复制到粘贴板!
要续订或更改基于 RPM 的安装的 SSL 证书,您可以编辑清单文件并运行安装程序。安装程序验证所有 Ansible Automation Platform 组件是否正常工作。
或者,您可以手动更改 SSL 证书。这速度更快,但没有自动验证。
红帽建议您使用安装程序更改 Ansible Automation Platform 部署。
6.3.1. 续订自签名 SSL/TLS 证书 复制链接链接已复制到粘贴板!
以下步骤为所有 Ansible Automation Platform 组件重新生成新的 SSL/TLS 证书。
流程
将
aap_service_regen_cert=true添加到[all:vars]部分中的 inventory 文件中:[all:vars] aap_service_regen_cert=true
[all:vars] aap_service_regen_cert=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 运行安装程序。
验证
验证 Event-Driven Ansible 控制器上的 CA 文件和证书文件:
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/ansible-automation-platform/eda/server.cert openssl s_client -connect <EDA_FQDN>:443
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/ansible-automation-platform/eda/server.cert openssl s_client -connect <EDA_FQDN>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在平台网关中验证 CA 文件和证书文件:
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/ansible-automation-platform/gateway/gateway.cert openssl s_client -connect <GATEWAY_FQDN>:443
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/ansible-automation-platform/gateway/gateway.cert openssl s_client -connect <GATEWAY_FQDN>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证自动化中心中的 CA 文件和证书文件:
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/pulp/certs/pulp_webserver.crt openssl s_client -connect <HUB_FQDN>:443
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/pulp/certs/pulp_webserver.crt openssl s_client -connect <HUB_FQDN>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证自动化控制器中的 CA 文件和证书文件:
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/tower/tower.cert openssl s_client -connect <CONTROLLER_FQDN>:443
openssl verify -CAfile ansible-automation-platform-managed-ca-cert.crt /etc/tower/tower.cert openssl s_client -connect <CONTROLLER_FQDN>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3.2. 使用安装程序更改 SSL/TLS 证书和密钥 复制链接链接已复制到粘贴板!
以下流程描述了如何在清单文件中更改 SSL/TLS 证书和密钥。
先决条件
- 证书必须采用 PEM 格式。
- 如果存在中间证书颁发机构,您必须将它附加到服务器证书中。
- 为证书使用正确的顺序:服务器证书首先,后跟中间证书颁发机构。
如需更多信息,请参阅 NGINX 文档中的 ssl 证书部分。
流程
- 将新的 SSL/TLS 证书和密钥复制到相对于 Ansible Automation Platform 安装程序的路径。
将 SSL/TLS 证书和密钥的绝对路径添加到清单文件中。有关 设置这些变量 的指导,请参阅清单文件变量。
-
event-Driven Ansible controller:
automationedacontroller_ssl_cert,automationedacontroller_ssl_key,custom_ca_cert -
平台网关:
automationgateway_ssl_cert,automationgateway_ssl_key,custom_ca_cert -
自动化中心:
automationhub_ssl_cert,automationhub_ssl_key,custom_ca_cert 自动化控制器:
web_server_ssl_cert,web_server_ssl_key,custom_ca_cert注意custom_ca_cert必须是签署中间证书颁发机构的根证书颁发机构。此文件安装在/etc/pki/ca-trust/source/anchors中。
-
event-Driven Ansible controller:
- 运行安装程序。
6.3.3. 手动更改 SSL/TLS 证书和密钥 复制链接链接已复制到粘贴板!
以下流程描述了如何对所有 Ansible Automation Platform 组件手动更改 SSL/TLS 证书和密钥。
流程
备份当前的 SSL/TLS 证书:
cp <CERT_PATH> <CERT_PATH>-$(date +%F)
cp <CERT_PATH> <CERT_PATH>-$(date +%F)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 备份当前密钥文件:
cp <KEY_PATH> <KEY_PATH>-$(date +%F)
cp <KEY_PATH> <KEY_PATH>-$(date +%F)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将新的 SSL/TLS 证书复制到证书路径中。
- 将新密钥复制到密钥路径。
恢复 SELinux 上下文:
restorecon -v <CERT_PATH> <KEY_PATH>
restorecon -v <CERT_PATH> <KEY_PATH>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为证书和密钥文件设置适当的权限:
chown <OWNER>:<GROUP> <CERT_PATH> <KEY_PATH> chmod 0600 <CERT_PATH> <KEY_PATH>
chown <OWNER>:<GROUP> <CERT_PATH> <KEY_PATH> chmod 0600 <CERT_PATH> <KEY_PATH>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 测试 NGINX 配置:
nginx -t
nginx -tCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 NGINX:
systemctl reload nginx.service
systemctl reload nginx.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否安装了新的 SSL/TLS 证书和密钥:
true | openssl s_client -showcerts -connect <COMPONENT_FQDN>:443
true | openssl s_client -showcerts -connect <COMPONENT_FQDN>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表 6.2. 每个服务的 SSL/TLS 证书和密钥文件路径 服务 证书文件路径 密钥文件路径 owner:Group 自动化控制器
/etc/tower/tower.cert/etc/tower/tower.keyroot:awxAutomation hub
/etc/pulp/certs/pulp_webserver.crt/etc/pulp/certs/pulp_webserver.keyroot:pulpEvent-Driven Ansible 控制器
/etc/ansible-automation-platform/eda/server.cert/etc/ansible-automation-platform/eda/server.keyroot:eda平台网关
/etc/ansible-automation-platform/gateway/gateway.cert/etc/ansible-automation-platform/gateway/gateway.keyroot:gateway