文档

3. 安装 Ansible Automation Platform

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

注意

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

3.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 数据库(由自动化平台安装程序管理)。

    [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 必须安装在不是主塔节点或辅助塔节点的机器上。在冗余设置中,远程 PostgreSQL 版本要求是PostgreSQL 10

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

注意

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

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

  • 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 部署和配置.

3.2. 设置库存文件

在编辑库存文件时,您必须牢记以下几点

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

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

  • 对于**Ansible Automation Platform** 或**Automation Hub**:请务必在 [automationhub] 组中添加一个自动化中心主机(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中使用特殊字符,因为这可能会导致设置失败。

3.2.1. 示例库存文件

  • 对于**预配新节点**:在预配新节点时,将节点与所有当前节点一起添加到库存文件中,确保库存文件中包含所有密码。

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

3.2.1.1. 示例独立 Automation Hub 库存文件

[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

3.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

3.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中使用特殊字符,因为这可能会导致设置失败。

3.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中使用特殊字符,因为这可能会导致设置失败。

3.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中使用特殊字符,因为这可能会导致设置失败。

3.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=”your_password_here” 清单主机或组变量

  • ansible_user=root ansible_ssh_private_key_file=”path_to_your_keyfile.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 插件列表

3.3. 剧本设置

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

root@localhost:~$ ./setup.sh

设置脚本接受以下参数

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

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

  • -e EXTRA_VARS – 设置额外的 Ansible 变量,如 key=value 或 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。

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

Login form

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

3.4. 更改密码

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

awx-manage changepassword admin

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