**MAAS** (Metal as a Service) is Canonical's open source tool for discovering, commissioning, and deploying physical servers at scale. It treats bare metal the way a cloud treats VMs — giving you an API-driven "server factory" that can go from unpowered hardware to a running OS in minutes.
---
### First Principle: Physical servers should be as easy to provision as cloud instances.
MAAS abstracts the complexity of PXE booting, IPMI/BMC communication, and OS imaging behind a clean API and web UI. An operator calls an endpoint; MAAS powers on the machine, runs hardware discovery, installs the OS, and marks it ready — just like `aws ec2 run-instances` but for physical hardware.
---
### Key Considerations
- **Discovery & Commissioning**: MAAS auto-discovers servers via IPMI/BMC and runs commissioning scripts to inventory CPU, RAM, disk, and network configuration before deployment.
- **OS Deployment**: Supports Ubuntu, CentOS, RHEL, Windows, and custom images via PXE/iPXE boot. Curtin handles fast OS installation.
- **Networking Integration**: Manages DHCP, DNS, and VLAN assignments per machine. Integrates with [[Open vSwitch (OVS)]] and physical switch configuration.
- **Integration Layer**: MAAS pairs naturally with [[OpenStack]]'s Ironic component for IaaS-level bare metal orchestration, and with [[Ansible]] or [[OpenTofu]] for post-provisioning configuration.
- **At Scale**: Used by Canonical, telcos, and hyperscaler-style operators managing thousands of nodes. The REST API enables full automation of the provisioning pipeline.
---
### How It Fits
```
[[OpenBMC]] / IPMI (hardware control)
→ MAAS (discovers, commissions, deploys OS)
→ [[KVM]] + [[OpenStack]] (virtualises and orchestrates)
→ [[Ansible]] / [[OpenTofu]] (configures post-deploy)
```
[[Bare Metal]] | [[OpenBMC]] | [[Tinkerbell]] | [[OpenStack]] | [[KVM]] | [[Ansible]] | [[Open Source Hyperscaler MoC]]