**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]]