Red Hat Ansible Automation Platform 操作指南

Red Hat Ansible Automation Platform 2.4

安装后配置,以确保平稳部署 Ansible Automation Platform 安装

Red Hat Customer Content Services

摘要

本指南提供有关 Red Hat Ansible Automation Platform 安装后活动的说明和指导。

前言

安装 Red Hat Ansible Automation Platform 后,您的系统可能需要额外的配置,以确保您的部署平稳运行。本指南为配置任务提供在安装 Red Hat Ansible Automation Platform 后可以执行的操作。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

对红帽文档提供反馈

我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。

注意

您必须有一个红帽帐户并登录到客户门户网站。

要从客户门户网站提交文档反馈,请执行以下操作:

  1. 选择 Multi-page HTML 格式。
  2. 点文档右上角的 反馈 按钮。
  3. 突出显示您要提供反馈的文本部分。
  4. 点高亮文本旁的 添加反馈 对话框。
  5. 在页面右侧的文本框中输入您的反馈,然后单击 Submit

每次提交反馈时,我们都会自动创建跟踪问题。打开在点 Submit 后显示的链接,并开始监视问题或添加更多注释。

第 1 章 激活 Red Hat Ansible Automation Platform

Red Hat Ansible Automation Platform 使用可用的订阅或订阅清单来授权使用 Ansible Automation Platform。要获取订阅,您可以执行以下操作之一:

  1. 启动 Ansible Automation Platform 时,请使用您的红帽客户或 Satellite 凭证。
  2. 使用 Red Hat Ansible Automation Platform 界面或手动在 Ansible playbook 中上传订阅清单文件。

1.1. 使用凭证激活

当 Ansible Automation Platform 首次启动时,Ansible Automation Platform 订阅屏幕会自动显示。您可以使用您的红帽凭证直接检索您的订阅并将其导入 Ansible Automation Platform。

流程

  1. 输入您的红帽用户名和密码。
  2. Get Subscriptions

    注意

    如果集群节点通过 Subscription Manager 注册到 Satellite,也可以使用您的 Satellite 用户名和密码。

  3. 查看最终用户许可证协议并选择 我同意最终用户许可证协议
  4. 默认检查跟踪和分析选项。这些选择可以帮助红帽通过提供更好的用户体验来改进产品。您可以通过取消选择选项来选择不再使用。
  5. Submit
  6. 接受订阅后,许可证屏幕会显示并进入 Ansible Automation Platform 界面的 Dashboard。您可以通过点 Settings 图标 DAEMON 并从 Settings 屏幕中选择 License 选项卡来返回到许可证屏幕。

1.2. 使用清单文件激活

如果您有订阅清单,可以使用 Red Hat Ansible Automation Platform 界面或手动在 Ansible playbook 中上传清单文件。

先决条件

您必须有一个从红帽客户门户网站导出的 Red Hat Subscription Manifest 文件。如需更多信息,请参阅获取清单文件

使用接口上传

  1. 完成生成和下载清单文件的步骤
  2. 登录到 Red Hat Ansible Automation Platform。
  3. 如果没有立即提示输入清单文件,请转至 SettingsLicense
  4. 确保 UsernamePassword 字段为空。
  5. Browse 并选择清单文件。
  6. 点击 Next
注意

如果在 License 页面中禁用了 BROWSE 按钮,请清除 USERNAMEPASSWORD 字段。

手动上传

如果您无法使用 Red Hat Ansible Automation Platform 界面应用或更新订阅信息,您可以使用 ansible.controller 集合中的 license 模块手动将订阅清单上传到 Ansible playbook 中。

- name: Set the license using a file
  license:
  manifest: "/tmp/my_manifest.zip"

第 2 章 获取清单文件

您可以在 Red Hat Subscription Management 的 Subscription Allocations 部分中获取订阅清单。获取订阅分配后,您可以下载其清单文件并上传该文件以激活 Ansible Automation Platform。

首先,使用您的管理员用户帐户 登录到红帽客户门户网站,并按照本节中的步骤操作。

2.1. 创建订阅分配

通过创建新订阅分配,您可以为当前离线或 air-gapped 的系统设置侧订阅和权利。这是在下载清单并将其上传到 Ansible Automation Platform 之前所必需的。

流程

  1. Subscription Allocations 页面中,点 New Subscription Allocation
  2. 输入分配的名称,以便稍后找到它。
  3. 选择 Type: Satellite 6.8 作为管理应用。
  4. Create

2.2. 在订阅分配中添加订阅

创建分配后,您可以添加 Ansible Automation Platform 正确运行所需的订阅。在下载清单并将其添加到 Ansible Automation Platform 之前,此步骤是必需的。

流程

  1. Subscription Allocations 页面中,点您要添加订阅的订阅分配名称。
  2. Subscriptions 选项卡。
  3. Add Subscriptions
  4. 输入您要添加的 Ansible Automation Platform 权利数量。
  5. Submit

验证

接受订阅后,会显示订阅详情。Compliant 状态表示您的订阅符合您在订阅数中自动的主机数量。否则,您的状态将显示为 Out of Compliance,这表示您已超过订阅中的主机数量。

显示的其他重要信息包括:

主机自动化
由作业自动进行主机计数,这将消耗许可证计数
导入的主机
考虑所有清单源的主机计数(不会影响剩余的主机)
主机剩余
主机总数减主机自动

2.3. 下载清单文件

创建分配并拥有适当的订阅后,您可以从 Red Hat Subscription Management 下载清单。

流程

  1. Subscription Allocations 页面中,点您要生成清单的订阅分配名称。
  2. Subscriptions 选项卡。
  3. Export Manifest 以下载清单文件。
注意

该文件被保存到默认下载文件夹中,现在可以上传以激活 Red Hat Ansible Automation Platform

第 3 章 配置 Red Hat Ansible Automation Platform 的代理支持

您可以配置 Red Hat Ansible Automation Platform,以使用代理与流量通信。代理服务器充当来自其他服务器的客户机用于请求查找资源的请求的中介。客户端连接到代理服务器,请求不同的服务器提供某些服务或可用资源,代理服务器会评估请求,以简化和控制其复杂性。以下小节描述了支持的代理配置以及如何设置它们。

3.1. 启用代理支持

为了提供代理服务器支持,自动化控制器通过自动化控制器设置中的 REMOTE_HOST_HEADERS 列表变量处理代理请求(如 ALB、NLB、HAProxy、Squid、Nginx 和 tinyproxy)。默认情况下,REMOTE_HOST_HEADERS 设置为 ["REMOTE_ADDR", "REMOTE_HOST"]

要启用代理服务器支持,请在自动化控制器的设置页面中编辑 REMOTE_HOST_HEADERS 字段:

流程

  1. 在自动化控制器中,进入到 SettingsMiscellaneous System
  2. REMOTE_HOST_HEADERS 字段中输入以下值:

    [
      "HTTP_X_FORWARDED_FOR",
      "REMOTE_ADDR",
      "REMOTE_HOST"
    ]

自动化控制器通过搜索 REMOTE_HOST_HEADERS 中的标头列表来确定远程主机的 IP 地址,直到第一个 IP 地址所在的 IP 地址为止。

3.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 字段中配置允许使用 PROXY_IP_ALLOWED_LIST 字段的已知代理列表。不在已知代理列表上的负载均衡器和主机将导致请求被拒绝。

3.2.1. 配置已知的代理

要为自动化控制器配置已知代理列表,请将代理 IP 地址添加到自动化控制器设置页面中的 PROXY_IP_ALLOWED_LIST 字段中。

流程

  1. 在自动化控制器中,进入到 SettingsMiscellaneous System
  2. PROXY_IP_ALLOWED_LIST 字段中,输入允许连接到您的自动化控制器的 IP 地址,如下例所示:

    PROXY_IP_ALLOWED_LIST 条目示例

    [
      "example1.proxy.com:8080",
      "example2.proxy.com:8080"
    ]

重要
  • PROXY_IP_ALLOWED_LIST 需要列表中的代理正确清理标头输入,并正确将 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 地址。

3.3. 配置一个反向代理

您可以通过将 HTTP_X_FORWARDED_FOR 添加到自动化控制器设置中的 REMOTE_HOST_HEADERS 字段来支持反向代理服务器配置。X-Forwarded-For (XFF) HTTP 标头字段标识通过 HTTP 代理或负载平衡器连接到 Web 服务器的客户端的原始 IP 地址。

流程

  1. 在自动化控制器中,进入到 SettingsMiscellaneous System
  2. REMOTE_HOST_HEADERS 字段中输入以下值:

    [
      "HTTP_X_FORWARDED_FOR",
      "REMOTE_ADDR",
      "REMOTE_HOST"
    ]
  3. 将下面的行添加到 /etc/tower/conf.d/custom.py 中,以确保应用程序使用正确的标头:
USE_X_FORWARDED_PORT = True
USE_X_FORWARDED_HOST = True

3.4. 启用粘性会话

默认情况下,Application Load Balancer 根据所选的负载平衡算法将每个请求独立路由到注册的目标。为了避免在负载均衡器后面运行多个自动化中心实例时出现身份验证错误,您必须启用粘性会话。启用粘性会话会设置自定义应用程序 Cookie,它与负载均衡器中配置的 Cookie 匹配,以启用粘性。此自定义 Cookie 可以包含应用程序所需的任何 Cookie 属性。

其他资源

免责声明:包括在此处的外部网络链接仅为方便用户而提供。红帽没有审阅链接的内容,并不对其内容负责。包含任何指向外部网站的链接并不表示红帽认可该网站或其实体、产品或服务。您同意红帽对因您使用(或依赖)外部网站或内容而导致的任何损失或费用不承担任何责任。

第 4 章 配置自动化控制器 websocket 连接

您可以配置自动化控制器,使 websocket 配置与 nginx 或负载均衡器配置保持一致。

4.1. 用于自动化控制器的 websocket 配置

自动化控制器节点通过 websocket 互连,以在整个系统中分发所有 websocket 的消息。此配置设置可让任何浏览器客户端 websocket 订阅任何可能在自动化控制器节点上运行的任何作业。websocket 客户端不路由到特定的自动化控制器节点。任何自动化控制器节点都可以处理任何 websocket 请求,每个自动化控制器节点必须了解所有目标于所有客户端的 websocket 消息。

您可以在所有自动化控制器节点的 /etc/tower/conf.d/websocket_config.py 中配置 websocket,更改会在服务重启后生效。

自动化控制器将通过数据库中的实例记录自动处理其他自动化控制器节点的发现。

重要

您的自动化控制器节点旨在在多个私有、可信子网(而不是开放的互联网)中广播 websocket 流量。因此,如果您为 websocket 广播关闭 HTTPS,websocket 流量(大部分是 Ansible playbook stdout)会在自动化控制器节点之间进行发送,未加密。

4.1.1. 配置其他自动化控制器节点的自动发现

您可以配置 websocket 连接,使自动化控制器能够通过数据库中的实例记录自动处理其他自动化控制器节点的发现。

  • 编辑端口和协议的自动化控制器 websocket 信息,确认建立 websocket 连接时是否使用 TrueFalse 验证证书。

    BROADCAST_WEBSOCKET_PROTOCOL = 'http'
    BROADCAST_WEBSOCKET_PORT = 80
    BROADCAST_WEBSOCKET_VERIFY_CERT = False

第 5 章 从自动化控制器管理可用性分析和数据收集

您可以通过在自动化控制器用户界面中不使用或更改您的设置,改变来自自动化控制器控制器的可用性分析和数据收集。

5.1. 可用性分析和数据收集

自动化控制器包括可用性数据收集,以便更好地了解自动化控制器用户如何与自动化控制器进行交互,以帮助增强未来版本,并持续简化您的用户体验。

只有安装自动化控制器试用或全新安装自动化控制器的用户才会选择使用此数据收集。

其他资源

5.1.1. 控制自动化控制器的数据收集

您可以通过在 Settings 菜单中的用户界面选项卡中设置参与级别来控制自动化控制器如何收集数据。

流程

  1. 登录到您的自动化控制器。
  2. 进入到 SettingsUser Interface
  3. User Tracking State 下拉列表中选择所需的数据收集级别:

    • Off:防止数据收集。
    • Anonymous:启用数据收集功能,而不包括特定于您的用户数据.
    • Detailed:启用数据收集功能,包括特定于您的用户数据。
  4. Save 以应用设置或 Cancel 以丢弃更改。

第 6 章 在自动化控制器配置文件中加密明文密码

存储在自动化控制器配置文件中的密码以纯文本形式保存。有权访问 /etc/tower/conf.d/ 目录的用户可以查看用于访问数据库的密码。对目录的访问权限是通过权限进行控制的,因此受到保护,但有些安全发现导致这种保护无法受到保护。解决方法是单独加密密码。

6.1. 创建 PostgreSQL 密码哈希

流程

  1. 在自动化控制器节点上运行以下命令:

    # awx-manage shell_plus
  2. 然后,从 python 提示符运行以下命令:

    >>> from awx.main.utils import encrypt_value, get_encryption_key \
    >>> postgres_secret = encrypt_value('$POSTGRES_PASS') \
    >>> print(postgres_secret)
    注意

    $POSTGRES_PASS 变量替换为您要加密的实际纯文本密码。

    输出应类似以下示例:

    $encrypted$UTF8$AESCBC$Z0FBQUFBQmtLdGNRWXFjZGtkV1ZBR3hkNGVVbFFIU3hhY21UT081eXFkR09aUWZLcG9TSmpndmZYQXFyRHVFQ3ZYSE15OUFuM1RHZHBqTFU3S0MyNEo2Y2JWUURSYktsdmc9PQ==
  3. 复制这些哈希的完整值并保存它们。

    • 哈希值以 $encrypted$ 开头,而不仅仅是字符字符串,如下例所示:

      $encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ==

      请注意,$*_PASS 值已在清单文件中以纯文本形式。

这些步骤提供哈希值替换自动化控制器配置文件中的纯文本密码。

6.2. 加密 Postgres 密码

以下流程将纯文本密码替换为加密值。在集群的每个节点中执行以下步骤:

流程

  1. 使用以下命令编辑 /etc/tower/conf.d/postgres.py

    $ vim /etc/tower/conf.d/postgres.py
  2. 将以下行添加到文件的顶部:

    from awx.main.utils import decrypt_value, get_encryption_key
  3. 删除 'PASSWORD' 后列出的 password 值,并将它替换为以下行,将提供的 $encrytpted... 替换为您自己的哈希值:

    decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='),
    注意

    此步骤中的哈希值是 postgres_secret 的输出值。

  4. 完整的 postgres.py 类似如下:

    # Ansible Automation platform controller database settings. from awx.main.utils import decrypt_value, get_encryption_key DATABASES = { 'default': { 'ATOMIC_REQUESTS': True, 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'awx', 'USER': 'awx', 'PASSWORD': decrypt_value(get_encryption_key('value'),'$encrypted$AESCBC$Z0FBQUFBQmNONU9BbGQ1VjJyNDJRVTRKaFRIR09Ib2U5TGdaYVRfcXFXRjlmdmpZNjdoZVpEZ21QRWViMmNDOGJaM0dPeHN2b194NUxvQ1M5X3dSc1gxQ29TdDBKRkljWHc9PQ=='), 'HOST': '127.0.0.1', 'PORT': 5432, } }

6.3. 重启自动化控制器服务

流程

  1. 当加密在所有节点上完成时,使用以下方法在集群中执行服务重启:

    # automation-controller-service restart
  2. 导航到 UI,并验证您是否能够在所有节点中运行作业。

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.