Manage machines¶
MAAS gives you end-to-end control of machines: from discovery and commissioning to deployment, configuration, troubleshooting, and eventual release. This applies to bare metal servers, virtual machines (VMs), or pre-deployed systems.
This page is your one-stop reference for managing machines in MAAS.
Discover machines¶
Before you can manage machines, MAAS must detect and register them.
Discover active devices¶
MAAS monitors network traffic to find connected devices (machines, switches, bridges, and more).
UI: Networking > Network discovery
CLI:
maas $PROFILE discoveries read
List machines¶
Show all machines
UI: Machines (view list)
CLI:
maas $PROFILE machines read | jq -r '(["HOSTNAME","SYSID","STATUS"] | join(","))'
Show a specific machine
UI:
Machines > [machine]
URL shows:
/machine/<SYSTEM_ID>/summarySelect Summary for details
CLI:
maas admin machines read | jq -r '(["HOSTNAME","SYSID"] | (., map(length*"-"))),(.[] | [.hostname, .system_id]) | @tsv' | column -t maas $PROFILE machine read $SYSTEM_ID
Search machines¶
Use MAAS search syntax:
| Type | Example |
| Exact | pod:=able-cattle |
| Partial | pod:able,cattle |
| Negation | pod:!cattle |
UI: Hardware > Machines > use the search bar
CLI:
maas $PROFILE machines read | jq -r '(["HOSTNAME","SYSID","STATUS"] | join(","))'
Filter by parameters¶
UI: Hardware > Machines > Filters
Notes: MAAS builds the search terms for you. You can copy and re-use them for future searches.
Enable new machines¶
New machines are commissioned automatically when added.
Add a machine¶
Provide architecture, MAC address, and power settings.
UI: Machines > Add hardware > fill in fields > Save
CLI:
maas $PROFILE machines create architecture=$ARCH mac_addresses=$MAC_ADDRESS power_type=$POWER_TYPE power_parameters_power_id=$POWER_ID power_parameters_power_address=$POWER_ADDRESS power_parameters_power_pass=$POWER_PASSWORD
Disable auto-commissioning if needed:
maas $PROFILE maas set-config name=enlist_commissioning value=false
Add via chassis¶
Add multiple machines at once.
UI: Machines > Add hardware > Chassis > fill in details > Save
Clone a machine¶
Duplicate configuration.
UI: Machines > [machine] > Take action > Clone
CLI:
maas $PROFILE machine clone $SOURCE_SYSTEM_ID new_hostname=$NEW_HOSTNAME
Use LXD VMs¶
Provision VMs with LXD.
Set up LXD
Remove old versions, install, initialize, and disable DHCP on bridges.
CLI only:
sudo apt-get purge -y *lxd* *lxc* sudo apt-get autoremove -y sudo snap install lxd sudo lxd init lxc network set lxdbr0 dns.mode=none lxc network set lxdbr0 ipv4.dhcp=false lxc network set lxdbr0 ipv6.dhcp=false
Add a VM host:
UI: KVM > LXD > Add LXD host > enter details > run trust command > Save LXD host
CLI:
maas $PROFILE vm-hosts create type=lxd power_address=$LXD_ADDRESS project=$PROJECT_NAME
Add VMs:
UI: KVM > VM host > Add VM > fill in cores, RAM, disks > Compose machine
CLI:
maas $PROFILE vm-host compose $VM_HOST_ID cores=4 memory=8G disks=1:size=20G
Move or delete VMs:
UI: Machines > [VM] > Take action > Delete
CLI:
lxc move $VM_NAME $VM_NAME --project default --target-project $PROJECT_NAME maas $PROFILE machine delete $SYSTEM_ID
Control machine power¶
MAAS manages machine power on/off.
Power on:
UI: Machines > [machine] > Take action > Power on
CLI:
maas $PROFILE machine start $SYSTEM_ID
Power off:
UI: Machines > [machine] > Take action > Power off
CLI:
maas $PROFILE machine stop $SYSTEM_ID
Soft shutdown:
CLI only:
maas $PROFILE machine stop $SYSTEM_ID force=false
Set the correct power type:
UI: Machines > [machine] > Configuration > Power > Edit
CLI:
maas $PROFILE machine update $SYSTEM_ID power_type="$POWER_TYPE"
Commission and test machines¶
Commissioning collects hardware info and prepares machines for deployment.
Commission:
UI: Machines > [machine] > Take action > Commission
CLI:
maas $PROFILE machine commission $SYSTEM_ID
Test:
UI: Machines > [machine] > Take action > Test
CLI:
maas $PROFILE machine test $SYSTEM_ID tests=cpu,storage
View results:
UI: Machines > [machine] > Test results
CLI:
maas $PROFILE machine read $SYSTEM_ID | jq '.test_results'
Override failures:
UI: Machines > [machine] > Take action > Override test results
CLI:
maas $PROFILE machine set-test-result $SYSTEM_ID result=passed
Configure deployment¶
Deployment lets you adjust kernels, storage, and hardware sync.
Hardware sync (3.2+)¶
UI: Machines > [machine] > Take action > Deploy > Periodically sync hardware > Start deployment
CLI:
maas $PROFILE machine deploy $SYSTEM_ID osystem=$OSYSTEM distro_series=$VERSION enable_hw_sync=true
Kernel configuration¶
System-wide kernel version:
UI: Settings > Configuration > Commissioning > Default minimum kernel version
CLI:
maas $PROFILE maas set-config name=default_min_hwe_kernel value=$KERNEL
Per-machine kernel version:
UI: Machines > [machine] > Configuration > Minimum kernel
CLI:
maas $PROFILE machine update $SYSTEM_ID min_hwe_kernel=$HWE_KERNEL
Kernel parameters:
UI: Settings > Kernel parameters
CLI:
maas $PROFILE maas set-config name=kernel_opts value='$KERNEL_OPTIONS'
Storage layouts¶
All layouts can be set in UI or CLI.
UI: Machines > [machine] > Storage > Change storage layout > select desired layout > Save
CLI:
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=<layout_type>
Replace <layout_type> with one of:
Flat layout¶
One partition uses the whole disk (ext4, mounted at /).
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=flat
LVM layout¶
Flexible logical volumes, supports resizing and snapshots.
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=lvm
Bcache layout¶
SSD acts as cache for a larger backing disk.
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=bcache
VMFS6/VMFS7 layouts¶
For VMware ESXi hosts. Automates required datastore creation.
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=vmfs6
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=vmfs7
Blank layout¶
Removes all storage config — you must configure manually.
maas $PROFILE machine set-storage-layout $SYSTEM_ID storage_layout=blank
Custom layout (MAAS 3.1+)¶
Upload a commissioning script that outputs a JSON layout.
Script must run after
40-maas-01-machine-resourcesand before50-maas-01-commissioning.Script must write to
$MAAS_STORAGE_CONFIG_FILE.Device names in JSON must match those detected by MAAS.
⚠️ Notes:
Machine must be in Ready state before changing storage layouts.
blanklayout machines can’t be deployed until storage is reconfigured.bcacherequires an SSD device present, otherwise MAAS falls back to flat.
Deploy machines¶
Allocate:
UI: Machines > [machine] > Take action > Allocate
CLI:
maas $PROFILE machines allocate system_id=$SYSTEM_ID
Deploy:
UI: Machines > [machine] > Take action > Deploy
CLI:
maas $PROFILE machine deploy $SYSTEM_ID
Ephemeral deployment (RAM only):
UI: Machines > [machine] > Take action > Deploy in memory
CLI:
maas $PROFILE machine deploy $SYSTEM_ID ephemeral_deploy=true
Deploy as VM host:
UI: Machines > [machine] > Take action > Deploy > Install KVM
CLI:
maas $PROFILE machine deploy $SYSTEM_ID install_kvm=True
Deploy with cloud-init:
UI: Machines > [machine] > Take action > Deploy > Configuration options
CLI:
maas $PROFILE machine deploy $SYSTEM_ID cloud_init_userdata="$(cat cloud-init.yaml)"
Rescue and recovery¶
Use rescue mode to log in and diagnose issues.
Enter rescue mode:
UI: Machines > [machine] > Take action > Enter rescue mode
CLI:
maas $PROFILE machine enter-rescue-mode $SYSTEM_ID
SSH into machine:
ssh ubuntu@$MACHINE_IP
Exit rescue mode:
UI: Machines > [machine] > Take action > Exit rescue mode
CLI:
maas $PROFILE machine exit-rescue-mode $SYSTEM_ID
Mark broken/fixed:
UI: Machines > [machine] > Take action > Mark broken / Mark fixed
CLI:
maas $PROFILE machines mark-broken $SYSTEM_ID maas $PROFILE machines mark-fixed $SYSTEM_ID
Release or remove machines¶
Release:
UI: Machines > [machine] > Take action > Release
CLI:
maas $PROFILE machines release $SYSTEM_ID
Erase disks on release:
UI: Machines > [machine] > Release > Enable disk erasure options
CLI:
maas $PROFILE machine release $SYSTEM_ID erase=true secure_erase=true quick_erase=true
Delete:
UI: Machines > [machine] > Take action > Delete
CLI:
maas $PROFILE machine delete $SYSTEM_ID
Force delete stuck machines (CLI only):
maas $PROFILE machine delete $SYSTEM_ID force=true
Verify machines¶
Periodically check your machine list.
UI: Machines > view list or search
CLI:
maas $PROFILE machines read | jq -r '.[].hostname'
Safety nets¶
Commission before deploy to ensure correct hardware info.
Test results help catch failures before deployment.
Erase disks when releasing machines that handled sensitive data.
Next steps¶
Understand machine basics
Learn about the machine life-cycle
Learn more about commissioning machines
Discover more about deploying machines