Metal as a Service: Intro to MAAS provisioning tool

Sakthi Saravanan
ITNEXT
Published in
4 min readMay 4, 2020

--

The ‘as a service’ model reveal itself in different shapes based on the needs of businesses/users. Such as Infrastructure as a Service [IaaS], Platform as a Service [PaaS], Software as a Service [SaaS]. What is ‘as a service’ model all about? To put it simply, renting the service [could be infra, platform, software, sometimes functions] that is required for business based on demand [in pay as you go fashion]. In this ‘as a service’ line up, one of another addition is ‘MaaS’ i.e. Metal (bare-metals) as a Service. We can quickly guess what it is based on the name itself. We are renting out bare-metals (real physical hardware) from the service provider instead of buying it on our own. The advantage is that customers need not spend higher capital expenditure costs to purchase real physical hardware, and could reduce Operating Expenditure cost that is required to manage that hardware.

One might ask, what is the need of MaaS when we have other ‘as a service’ model, the answer is little straight-forward, you don’t have any restriction on what OS image/tools you wanted to use it with that hardware. For e.g. in the PaaS model, the provider can restrict users to use only certain images that are supported by the provider. On a broader view from the business perspective, this MaaS model is classified into two variants as ‘self-managed’ and ‘vendor-managed’. This classification is done based on who is managing the installation of the base image, application data backup, and recovery which is stored in hard-drives. Providing MaaS is not as simple as compared to setting up our home PC. It has to do many things just than cabling. Such as quality test for all machines before getting it to production, the discovery of resources, then scale based on demand, and so on. This is where the importance of the MAAS provisioning tool comes into the picture.

One can ask what is the difference between IaaS and MaaS, in IaaS resources are allocated in a multi-tenant environment (shared), whereas in MaaS bare-metals are dedicated to that particular customer.

MAAS is an open-sourced tool that helps in managing a large network of individual units by providing functionalities like discovery, commissioning, deploy, dynamically reconfigure and test.

MAAS Provisioning Tool Architecture

Broadly MAAS has two main components regional controller (regiond) and rack controller (rackd). ‘regiond’ would be responsible for serving operator requests through ReST API. ‘rackd’ would be responsible for providing services such as DHCP, ICMI, PXE and distributed in nature. ‘rackd’ is not actually gets involved in datapath of user’s traffic. It provides interface for managing the bare-metals placed in the rack like discovery, deploy. How the MAAS tool could communicate/control with bare-metals? let’s say how it discovers machines and taking its resources into inventory for further distribution. This is achieved with the help of BMC/PXE.

BMC is part of the Intelligent Platform Management Interface [IPMI] which is usually contained in the motherboard and its responsibilities are to monitor and report the state of the server, computer, or network devices. State includes temperature, power supply, OS system functions.

PXE is a client/server standardization for network boot [OS boot retrieved with the image that is from the network].

The good thing about MAAS, it is not only capable of managing bare-metals, but also helps in maximizing the hardware resource utilization by managing VMs which would run on top of physical machines with the same set of APIs and lifecycle that is defined for bare-metals. VMs are provisioned/managed by leveraging KVM (recently supports ESXi). This point enhances the MAAS role in EDGE computing where resources are limited.

KVM are type-1 (bare-metal) hypervisor. All hypervisor requires some components like memory management, process scheduler, network stack, device drivers. KVM has all these components since it is part of Linux kernels.

MAAS has the following lifecycle to manage bare-metal and virtual resources. Such as

  • New: When MAAS detects resources through PXE boot.
  • Commissioning: When MAAS retrieves and updates its inventory about information like CPU, RAM.
  • Ready: When it is done with a basic configuration that lets to start/stop the machines.
  • Allocated: When the resource is allocated to the user for production use.
  • Deploying: When the user initiates fresh boot up of OS image.
  • Releasing: When the user done with their work and releases back to the free pool.

Also, the MAAS ensures the quality of the machines before marking it ready for production by running the test with the help of cloud-init functions. On top of all, you can automate all the processes using tools like Juju, Chef.

I hope this article would give a high-level conceptual understanding of the MaaS model and MAAS provisioning tool.

“Help people, even when you know they can’t help you back!”

As said, Andrew King helped me to get some learning materials that I was eagerly waiting for without any expectation. Thanks, Andrew.

--

--