Upgrade from 1.9 to 2.x

MAAS 2.4 is only supported on Ubuntu 18.04 (Bionic Beaver). This is because changes in the base dependencies of Ubuntu 18.04 LTS mean that newer versions of MAAS will not be back-portable, and consequently, to upgrade to MAAS 2.4 and all future versions, you will need to first upgrade to 2.3. This is covered below.

See Upgrade 2.3 to 2.4 from Ubuntu 16.04 for further details on upgrading from 2.3 to 2.4

MAAS 2.3 is only supported on Ubuntu 16.04 LTS (Xenial Xerus). This is because 16.04 defaults to Python 3, whereas previous versions of Ubuntu defaulted to Python 2.

MAAS 1.9 will continue to be supported on Ubuntu 14.04 LTS (Trusty Tahr) until the latter reaches the end of its support cycle. See Ubuntu Releases for release and EOL dates for all Ubuntu versions.

Upgrading from 1.9 to 2.3 will therefore involve upgrading the version of Ubuntu to 16.04 LTS. In so doing, the MAAS database and MAAS configuration will be migrated. See the Xenial Release Notes for upgrading to Xenial.

Prior to the upgrade all packages should be updated (sudo apt-get update && sudo apt-get dist-upgrade). It is recommended that backups be made and that a test environment (that mirrors your production environment) be upgraded first, to pre-empt any issues.

IP range changes

The concepts and terminology used to define IP ranges within MAAS have changed significantly between 1.9 and 2.x releases of MAAS. These changes are described below.

MAAS 1.9 allows users to configure their managed networks to use either static or dynamic ranges. A static range is used by MAAS to allocate automatic (static) IP addresses while a dynamic range is used solely for DHCP.

Static ranges are deprecated in MAAS 2.x. Instead, MAAS assumes full control of the address space for a network it manages with two exceptions:

Reserved ranges allow MAAS to avoid addresses already in use on the network. When upgrading from MAAS 1.9 to MAAS 2.x, static ranges are migrated to their inverse reserved range equivalents.

For example, a dynamic range of - and a static range of - in MAAS 1.9 would be reconfigured as the following in MAAS 2.x:

Reserved range (1):   ->
Dynamic range:  ->
Reserved range (2):  ->
Reserved range (3): ->

The above example shows a static range replaced by three reserved ranges to create an equivalent configuration.

Note: With MAAS 2.1+, network devices discovery uses the ARP protocol to determine which addresses are being used, allowing MAAS to automatically avoid assigning recently used IP addresses.


The upgrade process can be complex, and depending on your installation, may require manual intervention. You may be asked whether you want to overwrite some files, PostgreSQL files in particular, especially if you've implemented high availability in PostgreSQL (see PostgreSQL HA). If you've made no modifications to these files, you can instruct the upgrade process to overwrite them. Otherwise, you'll need to merge the new changes into the files manually.

At the end of the upgrade, if you see processing errors with the maas, squid3 or maas-region-controller packages, or if the upgrade complains about unmet dependencies with the MAAS packages, try the following:

sudo apt -f install
sudo apt autoremove
sudo apt upgrade

This should fix the dependency errors, remove redundant packages and update to the latest version of MAAS.