从 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。
本节介绍在尝试升级 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
。 请参阅 集群 以了解详细信息。
请参阅Ansible Automation Platform 安装和参考指南中的 获取 Ansible Automation Platform 安装程序 以了解详细信息。
在编辑库存文件时,您必须牢记以下几点
库存文件的内容应定义在 ./inventory
中,与 ./setup.sh
安装程序剧本相邻。
对于安装和升级:如果您需要使用外部数据库,您必须确保库存文件的数据库部分已正确设置。 编辑此文件并在运行设置脚本之前添加您的外部数据库信息。
对于Ansible Automation Platform 或Automation 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
中使用特殊字符,因为它可能会导致设置失败。
对于预配新节点:在预配新节点时,将节点添加到与所有当前节点的库存文件中,确保所有密码都包含在库存文件中。
对于升级单节点:在升级时,请务必将您的库存文件与当前发行版进行比较。 建议您在执行升级时即使在这里保留密码。
[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
[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
[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
中使用特殊字符,因为它可能会导致设置失败。
[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
中使用特殊字符,因为它可能会导致设置失败。
[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
中使用特殊字符,因为它可能会导致设置失败。
[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 插件列表。
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