文档

7. 安装 Ansible Automation Platform

Ansible Automation Platform 可以通过选择最适合您环境的模式并对清单文件进行任何必要的修改来以多种方式安装。对于基于 OpenShift 的部署,您只能在 OpenShift 上部署 Tower。在 OpenShift 上部署 Automation Hub 不受支持。但是,您可以将 Automation Hub 部署在指向 OpenShift 的虚拟环境中。有关更多详细信息,请参阅 OpenShift 部署和配置

注意

即使节点没有数据库,也会安装数据库服务器。这是一个已知问题,将在未来的版本中解决。

7.1. Ansible Automation Platform 安装场景

Ansible Automation Platform 可以使用以下场景之一进行安装

单机:

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

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

    [tower]
    host
    
    [database]
    host2
    
  • 独立 Automation Hub,数据库与 Automation Hub 在同一节点上,或非安装程序管理的数据库

    [automationhub]
    host
    
  • 独立 Automation Hub,使用外部管理的数据库。这会将 Automation Hub 服务器安装在单台机器上,并通过剧本安装程序安装远程 PostgreSQL 数据库(由 Automation Platform Installer 管理)。

    [automationhub]
    host
    
    [database]
    host2
    

平台安装:

平台安装包括 Tower 和 Automation Hub。平台安装程序允许您为每个清单部署 1 个且仅 1 个 Automation Hub。鉴于安装程序可用作 Automation Hub 独立安装程序,如果您想部署多个 Automation Hub 节点,则可以运行任何数量的安装程序,并使用任何数量的不同清单。平台安装支持的 2 个选项是

  • 平台(Tower + Automation Hub),数据库与 Tower 在同一节点上,或非安装程序管理的数据库

    [tower]
    host1
    
    [automationhub]
    host2
    
  • 平台(Tower + Automation Hub),使用外部管理的数据库

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

多机集群

此场景涉及平台(集群化 Tower + Automation Hub)安装,使用外部管理的数据库。在这种模式下,会安装多个 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 和 Automation Hub 不能在同一节点上运行,这是一种不受支持的场景。这意味着任何平台部署都至少成为 2 节点部署拓扑。

可用于 Automation Platform 安装的设置

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

  • automationhub_require_content_approval: Automation Hub 是否在集合可用之前强制执行批准机制

  • automationhub_disable_https: Automation Hub 是否应禁用 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 部署和配置

7.2. 设置清单文件

编辑清单文件时,您必须牢记以下几点

  • 清单文件的内容应在 ./inventory 中定义,位于 ./setup.sh 安装程序剧本旁边。

  • 对于**安装和升级**:如果您需要使用外部数据库,则必须确保清单文件的数据库部分已正确设置。在运行设置脚本之前,编辑此文件并添加您的外部数据库信息。

  • 对于**Ansible Automation Platform** 或**Automation Hub**:请确保在 [automationhub] 组中添加了一个 Automation Hub 主机(Tower 和 Automation Hub 不能安装在同一节点上)。

  • Tower 不会为其使用的数据库配置复制或故障转移,尽管 Tower 应该可以与您拥有的任何复制一起使用。

  • 出于性能原因,数据库服务器应与 Tower 服务器位于同一网络或同一数据中心。

  • 对于**升级现有集群**:升级集群时,您可能决定还要重新配置集群以省略现有实例或实例组。从清单文件中省略实例或实例组不足以将它们从集群中删除。除了从清单文件中省略实例或实例组之外,您还必须在开始升级之前 取消预配实例或实例组。否则,省略的实例或实例组将继续与集群通信,这会导致升级过程中 Tower 服务出现问题。

  • 对于**集群化安装**:如果要创建集群化设置,则必须将 localhost 替换为所有实例的主机名或 IP 地址。所有节点/实例都必须能够使用此主机名或地址相互访问。换句话说,您不能在一个节点上使用 localhost ansible_connection=local,并且所有节点都应使用相同的格式来表示主机名。

    因此,这将不起作用

    [tower]
    localhost ansible_connection=local
    hostA
    hostB.example.com
    172.27.0.4
    

    而是使用以下格式

    [tower]
    hostA
    hostB
    hostC
    

    [tower]
    hostA.example.com
    hostB.example.com
    hostC.example.com
    

    [tower]
    172.27.0.2
    172.27.0.3
    172.27.0.4
    
  • 对于**所有标准安装**:执行安装时,您必须在清单文件中提供任何必要的密码。

注意

安装过程的更改现在要求您在清单文件中填写所有密码字段。如果您需要知道在哪里可以找到这些值,它们应该在

admin_password='' <— Tower 本地管理员密码

pg_password='' <—- 在 /etc/tower/conf.d/postgres.py 中找到

警告

请勿在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

7.2.1. 示例清单文件

  • 对于**配置新节点**:配置新节点时,将节点添加到包含所有当前节点的清单文件中,确保清单文件中包含所有密码。

  • 对于**升级单个节点**:升级时,请务必将清单文件与当前发行版版本进行比较。建议即使在执行升级时也保留密码。

7.2.1.1. 示例独立自动化中心清单文件

[automationhub]
automationhub.acme.org
[all:vars]
automationhub_admin_password='<password>'
automationhub_pg_host=''
automationhub_pg_port=''
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key

7.2.1.2. 示例平台清单文件

[tower]
tower.acme.org
[automationhub]
automationhub.acme.org
[database]
database-01.acme.org
[all:vars]
admin_password='<password>'
pg_host='database-01.acme.org'
pg_port='5432'
pg_database='awx'
pg_username='awx'
pg_password='<password>'
pg_sslmode='prefer'  # set to 'verify-full' for client-side enforced SSL
# Automation Hub Configuration
#
automationhub_admin_password='<password>'
automationhub_pg_host='database-01.acme.org'
automationhub_pg_port='5432'
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# Isolated Tower nodes automatically generate an RSA key for authentication;
# To disable this behavior, set this value to false
# isolated_key_generation=true
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in nginx for the web UI and API
# web_server_ssl_cert=/path/to/tower.cert
# web_server_ssl_key=/path/to/tower.key
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key
# Server-side SSL settings for PostgreSQL (when we are installing it).
# postgres_use_ssl=False
# postgres_ssl_cert=/path/to/pgsql.crt
# postgres_ssl_key=/path/to/pgsql.key

7.2.1.3. 示例单个节点清单文件

[tower]
localhost ansible_connection=local

[database]

[all:vars]
admin_password='password'

pg_host=''
pg_port=''

pg_database='awx'
pg_username='awx'
pg_password='password'

警告

请勿在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

7.2.1.4. 示例多节点集群清单文件

[tower]
clusternode1.example.com
clusternode2.example.com
clusternode3.example.com

[database]
dbnode.example.com

[all:vars]
ansible_become=true

admin_password='password'

pg_host='dbnode.example.com'
pg_port='5432'

pg_database='tower'
pg_username='tower'
pg_password='password'

警告

请勿在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

7.2.1.5. 示例外部现有数据库的清单文件

[tower]
node.example.com ansible_connection=local

[database]

[all:vars]
admin_password='password'
pg_password='password'


pg_host='database.example.com'
pg_port='5432'

pg_database='awx'
pg_username='awx'

警告

请勿在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

7.2.1.6. 示例需要安装的外部数据库的清单文件

[tower]
node.example.com ansible_connection=local


[database]
database.example.com

[all:vars]
admin_password='password'
pg_password='password'

pg_host='database.example.com'
pg_port='5432'

pg_database='awx'
pg_username='awx'

警告

请勿在 pg_password 中使用特殊字符,因为这可能会导致设置失败。

完成所有必要的更改后,即可运行 ./setup.sh

注意

需要对远程机器进行 root 访问。使用 Ansible,可以通过多种方式实现此目的

  • ansible_user=root ansible_ssh_pass=”您的密码” 清单主机或组变量

  • ansible_user=root ansible_ssh_private_key_file=”您的密钥文件路径.pem” 清单主机或组变量

  • ANSIBLE_BECOME_METHOD=’sudo’ ANSIBLE_BECOME=True ./setup.sh

  • ANSIBLE_SUDO=True ./setup.sh(仅适用于 Ansible 2.7)

Ansible 配置参数 DEFAULT_SUDO 在 Ansible 2.8 中已被移除,导致 ANSIBLE_SUDO=True ./setup.sh 权限提升方法不再起作用。有关 become 插件的更多信息,请参阅 了解权限提升become 插件列表

7.3. 剧本设置

Tower 设置剧本脚本使用 inventory 文件,并从解压缩 Tower 安装程序 tarball 的路径中调用为 ./setup.sh

root@localhost:~$ ./setup.sh

设置脚本接受以下参数

  • -h – 显示此帮助消息并退出

  • -i INVENTORY_FILE – Ansible 清单文件路径(默认:inventory

  • -e EXTRA_VARS – 设置额外的 Ansible 变量,如键=值或 YAML/JSON(例如 -e bundle_install=false 强制在线安装)

  • -b – 在安装之前执行数据库备份

  • -r – 在安装之前执行数据库还原(除非 EXTRA_VARS 提供了非默认路径,否则使用默认还原路径,如下面的代码示例所示)

./setup.sh -e 'restore_backup_file=/path/to/nondefault/location' -r

使用适当的参数调用 ./setup.sh 后,Tower 将按照配置安装在相应的机器上。设置使用 ansible.com 上托管的存储库从 RPM 包安装 Tower。

设置完成后,使用您的 Web 浏览器访问 Tower 服务器并查看 Tower 登录屏幕。您的 Tower 服务器可从端口 80 访问 (https://<TOWER_SERVER_NAME>/),但会重定向到端口 443,因此 443 也需要可用。

Login form

如果 Tower 安装失败,并且您是购买了 Ansible Tower 有效许可证的客户,请联系 Red Hat 客户门户网站的 Ansible:https://access.redhat.com/.

7.4. 更改密码

安装后,如果您通过 SSH 登录到 Tower 实例,则默认管理员密码将在提示符中提供。然后,您可以使用以下命令更改密码(以 root 或 AWX 用户身份)

awx-manage changepassword admin

之后,您输入的密码将作为 Web UI 中的管理员密码起作用。