Recently we had the need to install a number of Ubuntu boxes for a client. Whilst our usual home-grown scripts with Kickstart and Salt work just fine, they are not the most intuitive to hand over or maintain. So we used Canonical’s MaaS or Metal as a Service. We are talking tens of machines, not thousands, so we created a single node MaaS installation. This gives flexibility for future deployments, as MaaS can install a number of different operating systems.
This is a walk through of what turned out to be a very quick and easy install. Now we can install servers on
MaaS install packages
MaaS consists of several packages that have been consolidated into a virtual package called, surprisingly enough, MaaS. This, when installed, creates a single server that can directly control a group of nodes. These packages are:
- maas: seed cloud set-up, which includes both the region controller and the cluster controller below
- maas-region-controller: includes the web UI, API and database
- maas-cluster-controller: controls a group (cluster) of nodes, including DHCP management
- maas-dhcp/maas-dns: required when managing DHCP/DNS
- maas-proxy: required to provide a MaaS proxy
For more complex, multi server set-ups, packages can be installed individually as needed. We used version 1.8 which is currently the stable revision. At the time of writing, 1.9 was in RC1. MaaS Package Repositories exist in PPA format. To always be on the latest stable release, we used ppa:maas/stable.
To add the repository:
$ sudo add-apt-repository ppa:maas/stable MAAS latest stable release (currently 1.8) More info: https://launchpad.net/~maas/+archive/ubuntu/stable Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmpdxpqhgcg/secring.gpg' created gpg: keyring `/tmp/tmpdxpqhgcg/pubring.gpg' created gpg: requesting key 684D4A1C from hkp server keyserver.ubuntu.com gpg: /tmp/tmpdxpqhgcg/trustdb.gpg: trustdb created gpg: key 684D4A1C: public key "Launchpad PPA for MAAS" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
Then update and install:
$ sudo apt-get update && apt-get install maas
On our machine this pulled in a lot of packages which were mainly Python modules, nearly 200MB of files. The whole installation is automatic, right from installing the database to creating users for it.
In fact, that is all there was to be done. At this point we connected to the web interface:
But found that we had no users:
Post MaaS installation tasks
$ sudo maas-region-admin createadmin --username=maasroot --firstname.lastname@example.org
There is an API to do most things, so the images can be obtained this way too:
$ maas my-maas-session boot-resources import
Finishing MaaS installation
One gotcha we found was that the standard discover kernel was Ubuntu 14, so you do need to download that, even if you are not going to use it for installs. We did not do this initially and kept getting a ‘kernel not found’ error on a target server after PXE boot.
Once all the images we needed were downloaded, we started to add nodes. This was done with automatic discovery. And that was that, as they say. MaaS was very easy to install and mostly just worked. Possibly we were not patient enough, but there were moments when more feedback from the web console would have been handy. For example, some boxes did not wake-on-lan correctly, but you would not know until you poked the server.