MAAS – Metal As A Service. It treats physical servers like virtual machines (instances) in the cloud. Rather than having to manage each server individually, MAAS turns bare metal into an elastic cloud-like resource.
MAAS can act as a standalone PXE/preseed service or it can be integrated with other technologies. It’s designed to work with Juju, the service and model management service. It’s a perfect arrangement: MAAS manages the machines and Juju manages the services running on those machines.
How MAAS works
MAAS manages a pool of nodes. After registering (“Enlisting” state) a new system and preparing it for service (“Commissioning” state), the system joins the pool and is available for use (“Ready” state).
MAAS controls machines through IPMI (or another BMC) or converged chassis controller such as Cisco UCS.
Users of the MAAS then allocate them for their own use (“Acquire”) when they go into use. Any subsequently installed operating system will contain the user’s SSH public key for remote access (the user’s MAAS account first needs to import the key). The web UI also allows for manual allocation in the sense of reserving hardware to specific users for later use.
When allocating from the API/CLI, you can specify requirements (“constraints”) for a machine. Common constraints are: memory, CPU cores, connected networks, and what physical zone they should be in.
An allocated MAAS node is not like a virtual instance in a cloud: you get complete control, including hardware drivers and root access. To upgrade a BIOS, for example, an administrator could allocate a node to themselves, and run a vendor-supplied upgrade utility.
Once you are done with a node you have allocated you send it back to the pool for re-use.
Note that Juju is designed to work with MAAS. In this case, MAAS becomes a sort of backend (resource pool) for Juju, or a “cloud provider” in Juju terminology. However, everything that was stated earlier still applies. For instance, if Juju removes a machine then MAAS will, in turn, release that machine to the pool.
Concepts and Terms
Nodes – general term that refers to multiple, more specific objects. Basically, it is a networked object that is known to MAAS
Machine – a node that can be deployed by MAAS.
Region controller – can be thought of as being responsible for a data centre, or a single region. Multiple fabrics are used by MAAS to accommodate subdivisions within a single region, such as multiple floors in a data centre.
- REST API server (TCP port 5240)
- PostgreSQL database
- caching HTTP proxy
- web UI
Rack controller – attached to each “fabric”. A common setup is to have a rack controller in each data centre server rack.
- HTTP (for images)
- power management
Device – a non-deployable node. This entity can be used to track routers.
Example: Devices can be assigned IP addresses (static or dynamic) and DNS names.
Zones – is an organizational unit that contains nodes where each node is in one, and only one, zone. Later, while in production, a node can be taken (allocated) from a specific zone (or not from a specific zone). Since zones, by nature, are custom-designed (with the exception of the ‘default’ zone), they provide more flexibility than a similar feature offered by a public cloud service (example: availability zones).