About MAAS (snap/2.7/CLI)

MAAS is an open-source tool that lets you create a data centre from bare-metal servers. You can discover, commission, deploy, and dynamically reconfigure a large network of individual units. MAAS converts your hardware investment into a cohesive, flexible, distributed data centre, with a minimum of time and effort.

Four questions you might have:

  1. What is MAAS?
  2. What does MAAS offer me?
  3. Can MAAS co-locate key components to conserve resources?
  4. How does MAAS work?

What is MAAS?

MAAS expands to “Metal As A Service” – it converts bare-metal servers into cloud instances of virtual machines. There is no need to manage individual units. You can quickly provision or destroy machines, as if they were instances hosted in a public cloud like Amazon AWS, Google GCE, or Microsoft Azure.

MAAS can act as a standalone PXE/preseed service or integrate with other technologies. It works exceptionally well with Juju, the service and model management tool. MAAS manages the machines and Juju manages the services running on those machines – a perfect arrangement. Virtual machines (VMs) can even act as MAAS machines if they boot from the network via PXE.

Tell me about PXE booting

PXE stands for “Preboot Execution Environment,” usually pronounced “pixie.” The term refers to a way of booting an OS image (or other software assembly) downloaded to a client via a NIC. The NIC must be PXE-capable for this to work. Many NICs can be configured to support PXE boot with a software switch.

What MAAS offers

MAAS can manage a large number of physical machines by merging them into user-defined resource pools. MAAS automatically provisions participating machines and makes them available for use. You can return unused machines to the assigned pool at any time.

MAAS integrates all the tools you need into a smooth system-management experience. It includes the following eleven features:

  1. Ubuntu, CentOS, Windows, and RHEL installation support
  2. open-source IP address management (IPAM)
  3. high availability (optional)
  4. IPv6 support
  5. inventory of components
  6. DHCP and DNS for other devices on the network
  7. DHCP relay integration
  8. VLAN and fabric support
  9. NTP for the entire infrastructure
  10. hardware testing
  11. composable hardware support

MAAS works with any system configuration tools. Both the Chef and Juju teams recommend MAAS as a physical provisioning system.

Please note that Windows and RHEL images require Ubuntu Advantage to work correctly with MAAS.

Colocation of key components

MAAS relies on two key components: the region controller and the rack controller. The region controller handles operator requests; the rack controller provides high-bandwidth services to multiple racks. In essence, rack controllers manage racks, while the region controller manages the data centre. We generally recommended installing both controllers on the same system. The default MAAS install delivers this co-located configuration automatically. This all-in-one solution also provides DHCP.

See Concepts and terms for a deeper understanding of these components. Note that in special cases, such as high availability or load balancing, you will want to install multiple region and rack controllers. You should also review your existing network design to determine whether MAAS-managed DHCP will cause problems.

How MAAS works

When you add a new machine to MAAS, or elect to add a machine that MAAS has enlisted, MAAS commissions it for service and adds it to the pool. At that point, the machine is ready for use. MAAS keeps things simple, marking machines as “New,” “Commissioning,” “Ready,” and so on.

Tell me, quickly, about enlistment and commissioning.

There are two ways to add a machine to MAAS. Assuming it’s on the network and capable of PXE-booting, you can add it explicitly – or MAAS can simply discover it when you turn it on.

Enlistment just means that MAAS discovers a machine when you turn it on, and presents it to the MAAS administrator, so that they can choose whether or not to commission it. Machines that have only been enlisted will show up in the machine list as “New.”

Commissioning means that MAAS has successfully booted the machine, scanned and recorded its resources, and prepared it for eventual deployment. Machines that you explicitly add are automatically commissioned. MAAS marks a successfully-commissioned machine as “Ready” in the machine list.

MAAS controls machines through IPMI (or another BMC). It can also manage machines through a converged chassis controller, such as Cisco UCS. You can choose how you want to control power on your machines based on what is available. MAAS overwrites the machine’s disk space with your chosen, pre-cached OS images.

Warning: The above comment about disk space bears repeating: MAAS will overwrite the disk space of all machines it enlists. All pool machines are under the control of MAAS; you should provision them using other methods.

MAAS users allocate (“acquire”) machines for use when needed. The web UI also allows you to acquire machines manually, such as when you are reserving specific hardware for certain users. You can remotely access and customise the installed operating system via SSH.

When acquiring machines from the API/CLI, you can specify requirements (“constraints”). Common constraints are memory, CPU cores, connected networks, and assigned physical zone.

An acquired MAAS machine is more flexible than a virtual instance in a cloud. You have complete control, including hardware drivers and root access. If you want to upgrade the BIOS, for example, you can allocate a machine to yourself and complete the upgrade. Once you have completed the upgrade, you can send the machine back to the pool.

Note that Juju is designed to work with MAAS. MAAS becomes a back-end Juju resource pool with all functionality fully available. For instance, if Juju removes a machine, then MAAS will release that machine to the pool. With Juju, MAAS can become an integral part of your data centre strategy and operations.