MaaS logo

Canonical MaaS installation

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 mass maas.

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:

http://localhost/MAAS/

But found that we had no users:

Initial log in page

Post MaaS installation tasks

Create users

$ sudo maas-region-admin createadmin --username=maasroot --email=example@example.com

Download images

Once you have created your first user you can now log in to the management webpage. The first task is to import the images required to install.
DownloadImages

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.

For more information about MaaS installations, contact Hyperscale IT on +44 (0)207 514 5683 or info@hyperscaleit.com.

Facebooktwittergoogle_plusredditlinkedinmailFacebooktwittergoogle_plusredditlinkedinmail

Leave a Reply

Your email address will not be published.
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>