12. Upgrading an Existing Tower Installation
You can upgrade your existing Tower installation to the latest version easily.
As with installation, the upgrade process requires that the Tower server be able to access the Internet. The upgrade process takes roughly the same amount of time as a Tower installation, plus any time needed for data migration.
This upgrade procedure assumes that you have a working installation of Ansible and Tower.
Note
You can not convert an embedded-database Tower to a High Availability installation as part of an upgrade. Users who want to deploy Tower in a High Availability configuration should back up their Tower database, install a new HA configuration on a different VM or physical host, and then restore the database. It is possible to add a primary or secondary instance later on to Tower if it is already operating on an external database. Refer to the High Availability chapter of the Tower Administration Guide.
12.1. Requirements
Before upgrading your Tower installation, refer to Requirements to ensure you have enough disk space and RAM as well as to review any software needs. For example, you should have the latest stable release of Ansible installed before performing an upgrade.
12.2. Backing Up Your Tower Installation
It is advised that you create a backup before upgrading the system. After the backup process has been accomplished, proceed with OS/Ansible/Tower upgrades.
Refer to Backing Up and Restoring Tower in the Ansible Tower Administration Guide.
12.3. Get the Tower Installer
Download the Ansible Tower install/upgrade tool: http://releases.ansible.com/ansible-tower/setup/
Extract it, then cd
into the setup directory. Replace the string VERSION
in the commands below with the version of Tower that you are installing e.g., “2.1.4”.
root@localhost:~$ tar xvzf ansible-tower-setup-latest.tar.gz
root@localhost:~$ cd ansible-tower-setup-VERSION
12.4. Run the Tower Installation Wizard
To configure your upgrade, you run the same Tower Installation Wizard as you would for an installation.
12.4.1. Simplified Tower Upgrade
If you are upgrading a Tower instance on a local machine with an internal database, you can bypass many of the questions by invoking the configure script as ./configure --local
root@localhost:~$ ./configure --local
-------------------------------------------
Welcome to the Ansible Tower Install Wizard
-------------------------------------------
This wizard will guide you through the setup process.
LOCAL INSTALLATION
You are installing Ansible Tower on this machine, using an internal database.
REVIEW
You are UPGRADING an existing Tower installation on localhost.
Are these settings correct (y/n)?
Confirm that the settings are correct.
12.4.2. Upgrade Using an existing Settings File
If you have the tower_setup_conf.yml
file from when you installed Tower, you can pass it to the configure
script:
root@localhost:~$ ./configure -o tower_setup_conf.yml
-------------------------------------------
Welcome to the Ansible Tower Install Wizard
-------------------------------------------
This wizard will guide you through the setup process.
The configuration provided in /home/tower/ansible-tower-setup-2.1.4/tower_setup_conf.yml appears complete.
FINISHED!
You have completed the setup wizard. You may execute the installation of
Ansible Tower by issuing the following command:
sudo ./setup.sh
12.4.3. Upgrade Interactively
Alternatively, you can walk through the upgrade process. Invoke the configure
script:
root@localhost:~$ ./configure
-------------------------------------------
-------------------------------------------
Welcome to the Ansible Tower Install Wizard
-------------------------------------------
This wizard will guide you through the setup process.
PRIMARY TOWER MACHINE
Tower can be installed (or upgraded) on this machine, or onto a remote machine
that is reachable by SSH.
Note: If using the High Availability features of Tower, you must use DNS
resolvable hostnames or IP addresses (do not use "localhost").
Enter the hostname or IP to configure Ansible Tower
(default: localhost):
Once you enter the host, the Tower Installation Wizard contacts it to determine if Tower is installed. If it is a functioning Tower installation, it determines the current Tower configuration, including the location of any secondary nodes that need upgrading.
The Installation Wizard then asks you for connection details for connecting to any remote machines. Enter any needed SSH user, SSH key location, and whether sudo
or su
is in use.
12.5. The Setup Playbook
The Tower setup playbook script is invoked as ./setup.sh
from the path where you unpacked the Tower installer tarball. It uses the tower_setup_conf.yml
and inventory
files written by the Tower Installation Wizard. The setup script takes the following arguments:
-h
, --help
Displays a brief usage summary.
-c FILE
Use the specified FILE as the Tower configuration file
rather than tower_setup_conf.yml
in the current directory.
-i FILE
Use the specified FILE as the inventory for the setup
playbook rather than inventory
in the current directory.
-p
Set ansible to prompt for a SSH password when connecting to
remote machines
-s
Set ansible to prompt for a sudo password on remote machines
when upgrading Tower.
-u
Set ansible to prompt for a su password on remote machines
when upgrading Tower.
-e
Set additional ansible variables for the playbook to use
either in key=value or YAML/JSON form. This should not be needed in
normal operation.
-b
Perform a database backup in lieu of installing.
-r BACKUP_FILE
Perform a database restore in lieu of installing.
Depending on the configuration you entered when running the Tower Installation Wizard, it may have prompted you to run the setup playbook with some combination of -p
, -s
, or -u
.
As the root user, call setup.sh
with the appropriate parameters and Tower is upgraded on the appropriate machines as configured.
root@localhost:~$ ./setup.sh
Note
As part of the upgrade process, database schema migration may be done. Depending on the size of your Tower installation, this may take some time.
If the upgrade of Tower fails or if you need assistance, please contact Ansible at http://support.ansible.com/.