How to upgrade MAAS

MAAS 2.3 is the last supported version for Ubuntu 16.04 LTS. 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 also need to upgrade the base operating system.

MAAS 2.3 will continue to be supported on Ubuntu 16.04 LTS until the end of its support cycle. See Ubuntu Releases for release and EOL dates for all Ubuntu versions.

Upgrading from MAAS 2.3 to MAAS 2.4 involves two steps:

  1. Update Ubuntu 16.04 LTS to Ubuntu 18.04 LTS, automatically migrating both the MAAS database and the MAAS configuration for MAAS 2.4.
  2. Upgrade the PostgreSQL database used by MAAS from version 9.x to version 10.

Prior to the upgrade all packages should be updated. It is also strongly recommended that backups be made and that a test environment that mirrors your production environment be upgraded first, to pre-empt any issues.

Upgrade MAAS

To upgrade to MAAS 2.4, simply upgrade the operating system; the process that upgrades Ubuntu will also upgrade the software, including MAAS.

To upgrade Ubuntu, administrators need only type:

sudo do-release-upgrade

After the upgrade process completes and the machine is rebooted, MAAS will continue to use the PostgreSQL 9.x version that came with Ubuntu 16.04 LTS. However, because Ubuntu 18.04 LTS switches to PostgreSQL 10, it is imperative we upgrade the database as well.

Upgrade PostgreSQL

The PostgreSQL upgrade process is fairly simple.

First, use the following command to verify that both version 9.x and 10 PostgreSQL clusters are available:

pg_lsclusters

The output should look similar to the following:

Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5432 online postgres /var/lib/postgresql/9.5/main postgresql-9.5-main.log
10  main    5433 online postgres /var/lib/postgresql/10/main  postgresql-10-main.log

With both clusters verified to be online, stop MAAS and PostgreSQL:

sudo service maas-rackd stop 
sudo service maas-regiond stop 
sudo service postgresql stop

Next, rename the main cluster created by the installation of PostgreSQL 10 so that it doesn’t conflict with the upgrade:

sudo pg_renamecluster 10 main main_pristine

The output from pg_lsclusters should now look like the following:

Ver Cluster       Port Status Owner    Data directory                       Log file
9.5 main          5432 down   postgres /var/lib/postgresql/9.5/main         postgresql-9.5-main.log
10  main_pristine 5433 down   postgres /var/lib/postgresql/10/main_pristine postgresql-10-main_pristine.log

We can now safely upgrade the 9.x cluster:

sudo pg_upgradecluster 9.5 main

The final output from the previous command should show the new PostgreSQL version 10 main cluster is online:

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main postgresql-10-main.log

With the version 10 cluster verified as running, we can now drop the other clusters:

sudo pg_dropcluster 9.5 main
sudo pg_dropcluster 10 main_pristine

PostgreSQL has now been upgraded and you can now either reboot your machine or restart the MAAS services we stopped earlier:

sudo service maas-rackd start
sudo service maas-regiond start

Upgrade 2.4 to 2.5

To upgrade MAAS from 2.4 to 2.5:

sudo apt upgrade

Upgrading from 2.0/1/2/3 of MAAS to 2.5

If you’re running MAAS 2.3 or older, please see the following for more information about an upgrade path that makes sense for your installation. MAAS 2.3 was the last version to support Ubuntu 16.04 LTS.

Upgrading from 1.9

If you’re running MAAS 1.9, please start with the following and then see the section above. MAAS 1.9 was the last version to support Ubuntu 14.04 LTS.

See the Releases section on the Ubuntu wiki for more information about the Ubuntu release schedule.

There seems no comment for upgrading MAAS to latest version, for example as of now 2.6.
If there is nothing special to comment, we could change ‘2.5’ to ‘2.5 or later’.

I have tried to upgrade from 2.4.2 to 2.6 on Bionic but the upgrade has failed :

Applying maasserver.0165_remove_and_rename_power_parameters… OK
Applying maasserver.0166_auto_select_s390x_extra_arches…Traceback (most recent call last):
File “/usr/sbin/maas-region”, line 65, in
main()
File “/usr/sbin/maas-region”, line 61, in main
run()
File “/usr/sbin/maas-region”, line 49, in run
management.execute_from_command_line()
File “/usr/lib/python3/dist-packages/django/core/management/init.py”, line 364, in execute_from_command_line
utility.execute()
File “/usr/lib/python3/dist-packages/django/core/management/init.py”, line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/usr/lib/python3/dist-packages/django/core/management/base.py”, line 283, in run_from_argv
self.execute(*args, **cmd_options)
File “/usr/lib/python3/dist-packages/django/core/management/base.py”, line 330, in execute
output = self.handle(*args, **options)
File “/usr/lib/python3/dist-packages/maasserver/management/commands/dbupgrade.py”, line 108, in handle
call_command(“migrate”, interactive=False)
File “/usr/lib/python3/dist-packages/django/core/management/init.py”, line 131, in call_command
return command.execute(*args, **defaults)
File “/usr/lib/python3/dist-packages/django/core/management/base.py”, line 330, in execute
output = self.handle(*args, **options)
File “/usr/lib/python3/dist-packages/django/core/management/commands/migrate.py”, line 204, in handle
fake_initial=fake_initial,
File “/usr/lib/python3/dist-packages/django/db/migrations/executor.py”, line 115, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File “/usr/lib/python3/dist-packages/django/db/migrations/executor.py”, line 145, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File “/usr/lib/python3/dist-packages/django/db/migrations/executor.py”, line 244, in apply_migration
state = migration.apply(state, schema_editor)
File “/usr/lib/python3/dist-packages/django/db/migrations/migration.py”, line 129, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File “/usr/lib/python3/dist-packages/django/db/migrations/operations/special.py”, line 193, in database_forwards
self.code(from_state.apps, schema_editor)
File “/usr/lib/python3/dist-packages/maasserver/migrations/maasserver/0166_auto_select_s390x_extra_arches.py”, line 12, in add_s390x_to_pkg_repository_to_arches
url=‘http://ports.ubuntu.com/ubuntu-ports’)
File “/usr/lib/python3/dist-packages/django/db/models/manager.py”, line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File “/usr/lib/python3/dist-packages/django/db/models/query.py”, line 380, in get
self.model._meta.object_name
fake.DoesNotExist: PackageRepository matching query does not exist.
dpkg: error processing package maas-region-controller (–configure):
installed maas-region-controller package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of maas:
maas depends on maas-region-controller (= 2.6.1-7832-g17912cdc9-0ubuntu1~18.04.1); however:
Package maas-region-controller is not configured yet.

dpkg: error processing package maas (–configure):
dependency problems - leaving unconfigured

I am sorry but I was just talking about the document not about an issue on upgrading MAAS. I think you should create a new topic for that.

Thanks I have found a similar issue here Upgrade MAAS from 2.4 to 2.5 version