文档

1. 准备 Ansible 自动化平台安装

本指南帮助您尽快启动并运行 Ansible 自动化平台安装。

安装完成后,您可以使用 Web 浏览器访问并充分利用自动化平台。

1.1. 安装和参考指南

虽然本指南涵盖了基础知识,但您可能会发现需要 安装和参考指南 中提供的更详细的信息。

在开始安装之前,您还应查看 一般安装说明

1.2. 先决条件和要求

有关平台信息,请参阅 平台特定安装说明

注意

Tower 是一个完整的应用程序,安装过程将安装多个依赖项,例如 PostgreSQL、Django、NGINX 等。

您需要在独立的 VM 或云实例上安装 Tower,并且不要在该机器上与其他任何应用程序共存(除了可能监控或记录软件)。虽然 Tower 和 Ansible 是用 Python 编写的,但它们不仅仅是简单的 Python 库。因此,Tower 无法安装在 Python virtualenv 或任何类似子系统中;您必须按照本指南中的安装说明进行安装。此外,**不要**更改 Python 3 的默认 alternative

对于基于 OpenShift 的部署,请参阅 OpenShift 部署和配置

Ansible Tower 具有以下要求

从 Ansible Tower 3.8 开始,您**必须**在安装和运行 Ansible 自动化平台之前拥有有效的订阅。**即使您已经拥有先前版本的有效许可证,您仍然需要在升级到 Tower 3.8 时再次提供您的凭据或订阅清单。**有关详细信息,请参阅 附加订阅

  • 支持的操作系统:

    • Red Hat Enterprise Linux 8.2 或更高版本 64 位 (x86)

    • Red Hat Enterprise Linux 7.7 或更高版本 64 位 (x86)

    • CentOS 7.7 或更高版本 64 位 (x86)

注意

对于 Automation Hub,需要 selinux-policy 包版本大于或等于 3.13.1-268.el7_9.2。如果您的设置启用了 rhel-7-server-rpms 存储库,则 _9.2 版本将与 Automation Hub 一起自动提取。此外,**无法**使用 RHUI 订阅来安装 Automation Hub。

注意

Ansible Tower 的下一个主要版本将不支持 Red Hat Enterprise Linux 7 或 CentOS(任何版本)作为安装平台。

  • 当前支持的 Mozilla Firefox 或 Google Chrome 版本

    • 其他支持 HTML5 的 Web 浏览器可能可以使用,但尚未经过全面测试或支持。

  • 至少 2 个 CPU 用于自动化平台安装。有关确定特定配置中叉子数量所需的 CPU 容量的信息,请参阅Ansible Tower 用户指南中的 容量算法 部分。

  • 至少 4 GB RAM 用于自动化平台安装

    • 4 GB RAM(Vagrant 试用安装的最小值和建议值)

    • 4 GB RAM(外部独立 PostgreSQL 数据库的最小值)

    • 有关特定 RAM 需求,请参阅Ansible Tower 用户指南中的 容量算法 部分,了解如何根据特定配置中叉子的数量确定所需的容量。

  • 20 GB 专用硬盘空间 用于 Tower 服务节点

    • 20 GB 需求中的 10 GB 必须专门用于 /var/,Tower 在这里存储其文件和工作目录。

    • 存储卷的基线 IOPS 评分应至少为 750。

  • 20 GB 专用硬盘空间 用于包含数据库的节点(建议 150 GB+

    • 存储卷的基线 IOPS 评分应很高(1000 或更高)。

    • 所有 Tower 数据都存储在数据库中。数据库存储随着管理的主机数量、运行的作业数量、存储在事实缓存中的事实数量以及任何单个作业中的任务数量而增加。例如,每天在 250 台主机上运行 20 个任务的 playbook(每天 24 次)每周将在数据库中存储超过 800,000 个事件。

    • 如果数据库中没有预留足够的磁盘空间,则需要定期清理旧的作业运行和事实。有关更多信息,请参阅Ansible Tower 管理指南中的 管理作业

  • 需要 64 位支持(内核和运行时)

  • PostgreSQL 版本 10.x 用于运行 Ansible Tower 3.7 及更高版本。备份和恢复适用于当前 Ansible Tower 版本支持的 PostgreSQL 版本。

  • Ansible 版本 2.9 用于运行 Ansible Tower 版本 3.8 及更高版本

注意

您无法使用比上面列出的版本更旧的 PostgreSQL 和 Ansible 版本,并且能够运行 Ansible Tower 3.7 及更高版本。如果这两个版本不存在,则安装脚本将安装这两个版本。

  • 对于 Automation Hub:从 Ansible Tower 3.8 开始,Automation Hub 将充当 Ansible Tower 的内容提供者,这需要 Ansible Tower 部署和 Automation Hub 部署同时运行。Tower 和 Automation Hub 可以运行在 RHEL 7 或 8 上,但仅 Tower(而不是 Automation Hub)支持 OpenShift Container Platform (OCP)。

  • 对于 Amazon EC2:

    • m4.large 或更大的实例大小

    • 如果主机超过 100 台,则实例大小为 m4.xlarge 或更大

1.2.1. 有关自动化平台需求的补充说明

实际的 RAM 需求取决于 Tower 将同时管理多少台主机(由作业模板中的 forks 参数或系统 ansible.cfg 文件控制)。为了避免潜在的资源冲突,Ansible 建议每 10 个叉子使用 1 GB 的内存 + 2 GB 的 Tower 预留内存,有关更多详细信息,请参阅 容量算法。如果 forks 设置为 400,则建议使用 40 GB 的内存。

对于我们安装 Ansible Tower 的主机,Tower 会检查 umask 是否设置为 0022。如果不是,则设置失败。请确保将 umask=0022 设置为避免遇到此错误。

当然,可以处理更多主机,但是如果叉子的数量小于主机总数,则需要在主机上进行更多遍处理。在使用滚动更新或使用 Tower 中内置的供应回调系统(其中每个请求配置的系统都进入队列并尽快处理)时,会避免这些 RAM 限制;或者在 Tower 生成或部署 AMI 等映像的情况下。所有这些都是管理大型环境的好方法。有关更多问题,请通过 Red Hat 客户门户网站 https://access.redhat.com/ 联系 Ansible。

Ansible 自动化平台管理的系统的要求与 Ansible 的要求相同:https://docs.ansible.org.cn/ansible/latest/installation_guide/intro_installation.html#prerequisites

1.2.1.1. PostgreSQL 的显著更改

自动化平台使用 PostgreSQL 10.x,它是 RHEL 7 上的 SCL 包,是 RHEL8 上的应用程序流。升级到 PostgreSQL 10.x 时,一些值得注意的更改是

  • PostgreSQL 用户密码现在将在存储在数据库之前使用 SCRAM-SHA-256 安全哈希算法进行哈希处理。

  • 您不再需要在安装时在清单文件中提供 pg_hashed_password,因为 PostgreSQL 10.x 现在可以更安全地存储用户密码。如果用户在安装程序的清单文件中提供密码 (pg_password),则该密码将作为安装过程的一部分由 PostgreSQL 使用 SCRAM-SHA-256 进行哈希处理。**不要**在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

  • 由于 Ansible Tower 和 Automation Hub 在 3.8 中使用软件集合版本的 PostgreSQL,因此必须启用 rh-postgresql10 scl 才能访问数据库。管理员可以使用 awx-manage dbshell 命令,该命令将自动启用 PostgreSQL SCL。

  • 如果您只需要确定您的 Tower 实例是否可以访问数据库,可以使用命令 awx-manage check_db

1.2.1.2. PostgreSQL 配置

您可以选择将 PostgreSQL 数据库配置为独立节点,这些节点不受自动化平台安装程序管理。当自动化平台安装程序管理数据库服务器时,它会使用默认值配置服务器,这些默认值通常推荐用于大多数工作负载。但是,您可以为独立数据库服务器节点调整这些 PostgreSQL 设置,其中 ansible_memtotal_mb 是数据库服务器的总内存大小。

max_connections == 1024
shared_buffers == ansible_memtotal_mb*0.3
work_mem == ansible_memtotal_mb*0.03
maintenance_work_mem == ansible_memtotal_mb*0.04

有关 PostgreSQL 文档 的更多详细信息,请参阅 调整 PostgreSQL 服务器

1.2.2. Ansible 软件要求

虽然自动化平台依赖于 Ansible Playbook,并在安装 Tower 之前需要安装最新稳定版本的 Ansible,但不再需要手动安装 Ansible。

在新的安装中,Tower 会安装 Ansible 2.9 的最新发布包。

如果执行捆绑的自动化平台安装,安装程序会尝试从捆绑包中为您安装 Ansible(及其依赖项)(有关更多信息,请参阅 使用捆绑的 Ansible 自动化平台安装程序)。

如果您选择自行安装 Ansible,自动化平台安装程序将检测到 Ansible 已安装,并且不会尝试重新安装它。请注意,您必须使用诸如 yum 之类的包管理器来安装 Ansible,并且必须安装最新稳定版本才能使自动化平台正常工作。对于 Ansible Tower 版本 3.8 及更高版本,需要 Ansible 版本 2.9。

为了方便起见,以下部分总结了这些说明。

1.2.3. 特定于平台的安装说明

1.2.3.1. 在启用 FIPS 模式的系统上安装自动化平台

Ansible 自动化平台可以在启用 FIPS 模式的系统上运行,但需要注意一些限制。

  • 仅支持 Enterprise Linux 7+。为了使 Ansible Tower 在 FIPS 模式下工作,必须使用 RHEL 附带的标准 python。因此,不支持对 Tower 使用任何非标准、非系统 python。

  • 默认情况下,Tower 使用基于密码的身份验证配置 PostgreSQL,并且此过程依赖于在安装时运行 CREATE USER 时使用 md5。要从启用 FIPS 的系统运行 Tower 安装程序,请在您的清单文件中指定 pg_password不要pg_password 中使用特殊字符,因为这可能会导致安装失败。

    pg_password='choose-a-password'
    

    有关更多详细信息,请参阅 设置清单文件

    如果您在安装程序的清单文件中提供密码(pg_password),该密码将在安装过程中被 PostgreSQL 使用 SCRAM-SHA-256 哈希。

  • 命令 ssh-keygen 以一种格式(RFC4716)生成密钥,该格式在过程的某个时刻使用 md5 摘要算法(作为对输入密码短语执行的转换的一部分)。在强制执行 FIPS 的系统上,md5 被完全禁用,因此这些类型的加密 SSH 密钥(由密码短语保护的 RFC4716 私钥)将不可用。当启用 FIPS 模式时,您导入到 Ansible Tower 的任何加密 SSH 密钥必须PKCS8 格式的密钥。可以通过运行以下 openssl 命令将现有的 AES128 密钥转换为 PKCS8

    $ openssl pkcs8 -topk8 -v2 aes128 -in <INPUT_KEY> -out <NEW_OUTPUT_KEY>
    

有关更多详细信息,请参阅:https://access.redhat.com/solutions/1519083

  • 使用使用 paramiko 库的 Ansible 功能将不符合 FIPS 标准。这包括将 ansible_connection=paramiko 设置为传输以及使用利用 ncclient NETCONF 库的网络模块。

  • TACACS+ 协议使用 md5 来混淆授权包的内容;在启用 FIPS 模式的系统上,TACACS+ 身份验证 不受支持。

  • RADIUS 协议使用 md5Access-Request 查询中加密密码;在启用 FIPS 模式的系统上,RADIUS 身份验证 不受支持。

1.2.3.2. Red Hat Enterprise Linux 和 CentOS 设置的说明

  • PackageKit 经常会干扰安装/更新机制。在运行安装过程之前,请考虑禁用或删除 PackageKit(如果已安装)。

  • 仅支持“目标”SELinux 策略。目标策略可以设置为禁用、宽松或强制。

  • 执行捆绑安装时,请参阅 使用捆绑的 Ansible 自动化平台安装程序 以了解更多信息。

  • 安装 Ansible Tower 时,您只需运行 setup.sh,Tower 所需的任何存储库都会自动安装。

  • 最新版本的 Ansible 会在安装过程中自动安装。无需进行其他安装或配置。

1.2.3.3. Ubuntu 设置的说明

Ansible Tower 不再支持 Ubuntu。有关 Ubuntu 的详细信息,请参阅先前版本的《Ansible 自动化平台安装和参考指南》。

1.2.3.4. 在 OpenShift 上配置和安装

对于基于 OpenShift 的部署,请参阅 OpenShift 部署和配置

1.2.3.5. 在 Tower 上安装 Satellite 实例

Satellite 用户需要在安装 Tower 之前,在 Tower 节点上安装 Satellite 实例的 Katello RPM。此 RPM 会自动配置 Subscription Manager 以使用 Satellite 作为其内容源,并且 hostname 值会在 /etc/rhsm/rhsm.conf 中更新。

注意

如果您要在安装 Tower之后安装 Katello RPM,Tower 将无法访问 rhsm.conf - 它依赖该文件来从 Satellite 应用订阅。这是因为 Tower 安装程序在 rhsm.conf 文件上设置了 ACL 规则,因此,如果该文件不存在、后来被覆盖,或者用户没有访问该文件的权限,则无法应用订阅。

有关如何将主机注册到 Satellite 服务器的详细信息,请参阅 Satellite 文档中的 注册 部分。

1.3. 自动化平台安装方案

可以使用以下方案之一安装 Ansible 自动化平台。

单机:

  • 独立 Tower,数据库与 Tower 在同一节点上,或者非安装程序管理的数据库。这是 Tower 的单机安装 - Web 前端、REST API 后端和数据库都在一台机器上。这是 Tower 的标准安装。它还会从您的操作系统供应商存储库中安装 PostgreSQL,并将 Tower 服务配置为使用它作为其数据库。

    [tower]
    host
    
  • 独立 Tower,使用外部管理的数据库。这会在一台机器上安装 Tower 服务器,并将其配置为与远程 PostgreSQL 10 实例通信,将其作为其数据库。此远程 PostgreSQL 可以是您管理的服务器,也可以由云服务(例如 Amazon RDS)提供。

    [tower]
    host
    
    [database]
    host2
    
  • 独立自动化中心,数据库与自动化中心在同一节点上,或者非安装程序管理的数据库。

    [automationhub]
    host
    
  • 独立自动化中心,使用外部管理的数据库。这会在一台机器上安装自动化中心服务器,并通过 playbook 安装程序安装远程 PostgreSQL 数据库(由自动化平台安装程序管理)。

    [automationhub]
    host
    
    [database]
    host2
    

平台安装:

平台安装涉及 Tower 和自动化中心。平台安装程序允许您在每个清单中部署 1 个且仅 1 个自动化中心。鉴于安装程序可以用作自动化中心的独立安装程序,如果您想部署多个自动化中心节点,则可以运行任意次数的安装程序以及任意数量的不同清单。平台安装支持的 2 个选项是

  • 平台(Tower + 自动化中心),数据库与 Tower 在同一节点上,或者非安装程序管理的数据库。

    [tower]
    host1
    
    [automationhub]
    host2
    
  • 平台(Tower + 自动化中心),使用外部管理的数据库。

    [tower]
    host1
    
    [automationhub]
    host2
    
    [database]
    host3
    

多机集群

此方案涉及平台(集群化的 Tower + 自动化中心)安装,使用外部管理的数据库。在此模式下,将安装和激活多个 Tower 节点。任何节点都可以接收 HTTP 请求,并且所有节点都可以执行作业。这会在一台机器上安装平台服务器,并将其配置为与远程 PostgreSQL 实例通信,将其作为其数据库。此远程 PostgreSQL 可以是您管理的服务器,也可以由云服务(例如 Amazon RDS)提供。

[tower]
host1
host11
host12

[automationhub]
host2

[database]
host3

注意

在集群设置中运行需要 Tower 使用的任何数据库都是外部的 - PostgreSQL 必须安装在不是主 Tower 节点或辅助 Tower 节点的机器上。在冗余设置中,远程 PostgreSQL 版本要求是PostgreSQL 10

有关配置集群设置的更多信息,请参阅 集群

注意

1)。Tower 不会为其使用的数据库配置复制或故障转移,尽管 Tower 应该与您拥有的任何复制一起使用。2)。出于性能原因,数据库服务器应与 Tower 服务器在同一网络或同一数据中心中。3)。Tower 和自动化中心不能在同一节点上运行,这是不支持的方案。这意味着任何平台部署都至少是 2 节点部署拓扑。

可用于自动化平台安装的设置

  • automationhub_importer_settings:要传递给 galaxy-importer 的设置/配置字典。它最终将位于 /etc/galaxy-importer/galaxy-importer.cfg 中。

  • automationhub_require_content_approval:自动化中心是否在集合可用之前强制执行批准机制。

  • automationhub_disable_https:自动化中心是否应启用 TLS 部署。

  • automationhub_disable_hsts: 是否启用 Automation Hub 的 HTTP 严格传输安全 (HSTS) 网络安全策略机制。

  • automationhub_ssl_validate_certs: Automation Hub 是否验证证书,当请求自身时(默认值 = False),因为默认情况下,平台使用自签名证书进行部署。

  • automationhub_ssl_cert: 与 web_server_ssl_cert 相同,但用于 Automation Hub UI 和 API。

  • automationhub_ssl_key: 与 web_server_ssl_key 相同,但用于 Automation Hub UI 和 API。

  • automationhub_backup_collections: Automation Hub 在 /var/lib/pulp 中提供工件。默认情况下,设置为 true,因此 Tower 默认情况下会自动备份工件。如果在该位置安装了分区(例如,LVM、NFS、CephFS 等),企业组织应确保始终对其进行备份。在这种情况下,您可以设置 automationhub_backup_collections = false,备份/还原过程将不再需要备份/还原 /var/lib/pulp

对于基于 OpenShift 的部署,请参阅 OpenShift 部署和配置