← Gateway 1: Init & Ingest 2: Network Topology 3: The Virtual Machine 4: Provision & Scripting

Chapter 1: Initialization & Ingestion

Bypassing the dashboard setup journey entirely.

MAAS features a clean browser dashboard interface, backed by an authoritative REST API. We are bypassing the graphic dashboard interface. Our objective is deterministic bare-metal control straight from the system terminal prompt.

1. Ingesting the Snap

The installation target is wintermute—a local testbed environment. We pull down the core packages via the snap channel:

terminal $
sudo snap install maas --channel=2.8

2. Establishing Production Database Parameters

Rather than relying on ephemeral proof-of-concept storage setups, we deploy a production-grade PostgreSQL role schema to backing memory. We spin up the user role and target database payload directly:

terminal $
sudo apt update -y && sudo apt install -y postgresql
sudo -u postgres psql -c "CREATE USER \"maascli\" WITH ENCRYPTED PASSWORD 'maascli'"
sudo -u postgres createdb -O "maascli" "maasclidb"

To secure local role identification, we append our database permission policy into the host HBA tracking configuration:

/etc/postgresql/12/main/pg_hba.conf
host    maasclidb       maascli         0/0                     md5

3. Firing the Engine

We bind the region and rack services directly to our freshly engineered database URI connection string:

terminal $
sudo maas init region+rack --database-uri "postgres://maascli:maascli@localhost/maasclidb"

Once the migration registers successfully, we inject our administrative master profile credentials right through the CLI mechanism:

terminal $
sudo maas createadmin

4. Logging In

We extract our secure token directly from the local administrative key repository and authenticate our active shell session:

terminal $
sudo maas apikey --username=admin > api-key-file
maas login admin http://192.168.43.251:5240/MAAS/api/2.0/ < api-key-file
Chapter 2: Topology →