文档

2. 升级至 Ansible Automation Platform

从 Ansible Tower 3.8 开始,Automation Hub 将充当 Ansible Tower 的内容提供者,这需要 Ansible Tower 部署和 Automation Hub 部署并行运行。 Ansible Automation Platform 安装程序包含这两个组件。 本节介绍升级过程中的每个组件。

注意

所有升级应不超过您当前要升级到的版本之前的两个主要版本。 例如,为了升级到 Ansible Tower 3.7.x,您必须首先处于版本 3.5.x; 也就是说,从版本 3.4.x 或更早版本没有直接升级路径。 请参阅 Red Hat 客户门户上的 推荐升级路径文章

要运行 Ansible Tower 3.8,您还必须拥有 Ansible 2.9。

2.1. 升级规划

本节介绍在尝试升级 Ansible Tower 实例时应牢记的更改。

  • 即使您已经从以前的版本获得了有效的许可证,您在升级到 Ansible Tower 3.8 时仍必须再次提供您的凭据或订阅清单。 请参阅Ansible Tower 用户指南中的 导入订阅

  • 如果您需要升级 Red Hat Enterprise Linux 和 Ansible Tower,您将需要备份和还原 Tower 数据。 请参阅Ansible Automation Platform 安装和参考指南中的 升级现有 Tower 安装 以了解详细信息。

  • 集群升级需要在开始升级之前特别注意实例和实例组。 请参阅 设置库存文件 并在 集群 中查看详细信息。

  • 以前版本的 Ansible Tower 在安装期间使用变量名称 rabbitmq_host。 如果您要从以前的 Tower 版本升级,并且之前在库存中指定了 rabbitmq_host,请在升级之前将 rabbitmq_host 重命名为 routable_hostname。 请参阅 集群 以了解详细信息。

2.2. 获取安装程序

请参阅Ansible Automation Platform 安装和参考指南中的 获取 Ansible Automation Platform 安装程序 以了解详细信息。

2.3. 设置库存文件

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

  • 库存文件的内容应定义在 ./inventory 中,与 ./setup.sh 安装程序剧本相邻。

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

  • 对于Ansible Automation PlatformAutomation Hub:请确保在 [automationhub] 组中添加一个自动化中心主机(Tower 和 Automation Hub 不能安装在同一节点上)。

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

2.3.1. 示例库存文件

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

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

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

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

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

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

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

2.3.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 2.8 中已移除 DEFAULT_SUDO Ansible 配置参数,导致 ANSIBLE_SUDO=True ./setup.sh 特权提升方法不再起作用。有关 become 插件的更多信息,请参阅 理解特权提升become 插件列表

2.4. 运行安装剧本

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