MAAS installation (snap/2.7/UI)

2.7 2.8 2.9 3.0
Snap CLI ~ UI CLI ~ UI CLI ~ UI CLI ~ UI
Packages CLI ~ UI CLI ~ UI CLI ~ UI CLI ~ UI

The minimum requirements for the machines that run MAAS vary widely depending on local implementation and usage. Below, you will find resource estimates based on MAAS components and operating system (Ubuntu Server). We consider both a test configuration (for proof of concept) and a production environment.

Two questions you might have:

  1. What are the requirements for a test environment?
  2. What are the requirements for a production environment?

Requirements for a test environment

Here is a proof-of-concept scenario, with all MAAS components installed on a single host. This scenario assumes two complete sets of images (latest two Ubuntu LTS releases) for a single architecture (amd64).

Memory (MB) CPU (GHz) Disk (GB)
Region controller (minus PostgreSQL) 512 0.5 5
PostgreSQL 512 0.5 5
Rack controller 512 0.5 5
Ubuntu Server (including logs) 512 0.5 5

Based on this table, the approximate requirements for this scenario are 2 GB memory, 2 GHz CPU, and 20 GB of disk space.

Requirements for a production environment

Here is a production scenario designed to handle a high number of sustained client connections. This scenario implements both high availability (region and rack) and load balancing (region). MAAS reserves extra space for images (database and rack controller), while some images, such as those for Microsoft Windows, may require a lot more – so plan accordingly.

Memory (MB) CPU (GHz) Disk (GB)
Region controller (minus PostgreSQL) 2048 2.0 5
PostgreSQL 2048 2.0 20
Rack controller 2048 2.0 20
Ubuntu Server (including logs) 512 0.5 5

So, based on the above, the approximate requirements for this scenario are:

  1. A region controller (including PostgreSQL) installed on one host, with 4.5 GB memory, 4.5 GHz CPU, and 45 GB of disk space.
  2. A duplicate region controller (including PostgreSQL) on a second host, also with 4.5 GB memory, 4.5 GHz CPU, and 45 GB of disk space.
  3. A rack controller installed on a third host, with 2.5 GB memory, 2.5 GHz CPU, and 40 GB of disk space.
  4. A duplicate rack controller on a fourth host, also with 2.5 GB memory, 2.5 GHz CPU, and 40 GB of disk space.

The tables above refer to MAAS infrastructure only. They do not cover the resources needed by subsequently-added nodes. Note that machines should have IPMI-based BMC controllers for power cycling, see Power management for more details.

Some examples of factors that influence hardware specifications include:

  1. the number of connecting clients (client activity)
  2. how you decide to distribute services
  3. whether or not you use high availability/load balancing.
  4. the number of images that you choose to store (disk space affecting PostgreSQL and the rack controller)

Also, this discussion does not take into account a possible local image mirror, which would be a large consumer of disk space.

One rack controller should only service 1000 machines or less, regardless of how you distribute them across subnets. There is no load balancing at the rack level, so you will need additional, independent rack controllers. Each controller must service its own subnet(s).

Snaps are containerised software packages. To install MAAS from a snap simply enter the following:

sudo snap install maas --channel=2.7

After entering your password, the snap will download and install from the 2.7 channel. However, MAAS needs initialising before it’s ready to go.

Initialisation

The next step involves initialising MAAS with a run mode. Selecting one of the following modes dictates what services will run on the local system:

Mode Region Rack Database Description
all* X X X All services (see warning below)
region X Region API server only
rack X Rack controller only
region+rack X X Region API server and rack controller
none Reinitialises MAAS and stops services

all mode being deprecated: Configuring the MAAS snap in “all” mode will be deprecated in MAAS version 2.8.0 and removed in MAAS version 2.9.0.

To initialise MAAS and select a run mode, use the maas init command with the –mode argument.

Example

The following demonstrates the all mode, a popular initialisation choice for MAAS:

sudo maas init --mode all

A dialog will appear that will gather some basic information:

MAAS URL [default=http://10.55.60.1:5240/MAAS]: http://192.168.122.1:5240/MAAS
Create first admin account:       
Username: admin
Password: ******
Again: ******
Email: admin@example.com
Import SSH keys [] (lp:user-id or gh:user-id): lp:petermatulis

You will use the username and password to access the web UI. If you enter a Launchpad or GitHub account name with associated SSH key, MAAS will import them automatically.

MAAS URL

All run modes (except none) prompt for a MAAS URL, interpreted differently depending on the mode:

  • all, region+rack: Used to create a new region controller as well as to tell the rack controller how to find the region controller.
  • region: Used to create a new region controller.
  • rack: Used to locate the region controller.

Shared secret

The ‘rack’ and ‘region+rack’ modes will additionally ask for a shared secret that will allow the new rack controller to register with the region controller.

Reinitialising MAAS

To re-initialise MAAS, for example, to switch from rack to region:

sudo maas init --mode region

Additional init options

The init command can take a number of optional arguments. To list them all as well as read a brief description of each:

sudo maas init --help

Configuration verification

After a snap installation of MAAS, you can verify the currently-running configuration with:

sudo maas config

Sample output (for mode ‘all’):

Mode: all
Settings:
maas_url=http://192.168.122.1:5240/MAAS

Service statuses

You can check the status of running services with:

sudo maas status

Sample output (for mode ‘all’):

bind9                            RUNNING   pid 7999, uptime 0:09:17
dhcpd                            STOPPED   Not started
dhcpd6                           STOPPED   Not started
ntp                              RUNNING   pid 8598, uptime 0:05:42
postgresql                       RUNNING   pid 8001, uptime 0:09:17
proxy                            STOPPED   Not started
rackd                            RUNNING   pid 8000, uptime 0:09:17
regiond:regiond-0                RUNNING   pid 8003, uptime 0:09:17
regiond:regiond-1                RUNNING   pid 8008, uptime 0:09:17
regiond:regiond-2                RUNNING   pid 8005, uptime 0:09:17
regiond:regiond-3                RUNNING   pid 8015, uptime 0:09:17
tgt                              RUNNING   pid 8040, uptime 0:09:15

With MAAS installed and initialised, you can now open the web UI in your browser and begin your Configuration journey.

Once you’ve successfully installed MAAS (regardless of method), you can now login here:

http://${API_HOST}:5240/MAAS

where $API_HOST is the hostname or IP address of the region API server, which was set during installation. You will see a screen like this:

Log in at the prompts, with the login information you created when initialising MAAS.

Configuration

After a fresh MAAS installation, the web UI presents a couple of welcome screens. From these screens, you can set many system-wide options, including connectivity, image downloads, and authentication keys.

Your main concerns for this experiment are the DNS forwarder, the Ubuntu image import section, and the SSH public key, though you might want to set the region name to something memorable, since this text will appear at the bottom of every MAAS screen in this install domain. Set the DNS forwarder to something obvious, e.g., 8.8.8.8, Google’s DNS server. Set this to your own internal DNS server if you know the IP address.

Select an Ubuntu image to import, noting that you may be required to select at least one LTS version, depending upon the version of MAAS that snap installed. In this example, we’ve already chosen an image, and downloading is partially complete.

When you click on “Continue,” the screen will shift to a screen labelled, “SSH keys for admin:”

In the source drop-down, select “Launchpad,” “Github,” or “Upload.” If you choose one of the first two, you will need to enter your username for that service. For example, if you want to upload your SSH public key from Launchpad, you would enter:

lp:<username>

Likewise, if you want to upload your github public SSH key, you would enter:

gh:<username>

If you want to use your existing public key from your home directory, you can select “Upload”and then copy your entire public key from .ssh/id_rsa.pub (or wherever you may have stored the key):

and paste it into the block labelled “Public key.” Finally, press the “Import” button to import this key:

With this complete, you’ll see that MAAS has been successfully set up. Click ‘Go to the Dashboard’ to proceed.

Note that you may have to wait a few moments for your selected images to sync locally.

Enabling DHCP

Before moving forward with MAAS, you’ll want to enable DHCP. You can do this very easily from the web UI by selecting “Subnets” from the top menu, choosing the VLAN on which you want to enable DHCP, and select the button marked, “Enable DHCP.”

Networking

The Dashboard landing page lists non-registered devices that MAAS detected automatically on the network. This network discovery process allows you to easily add or map devices already connected to your network – devices that you may not necessarily want to manage with MAAS.

Network discovery can be disabled at any time from the button on the Dashboard view. Also note that you can get back to the dashboard at any time by clicking the MAAS logo.

Spaces, fabrics, zones and subnets

Networks in large data centres can be very complex. MAAS offers comprehensive control over networking so that you have the flexibility to reconfigure racks and deploy machines as you see fit. You can isolate machine deployment not only with DNS domains, but also via subnets, spaces, zones, and fabrics. The links provide more details, but these are all basically collections:

  • subnet has the traditional meaning: a range of IP addresses covering a subset of IP addresses. Generally speaking , a subnet is a collection of IP addresses which includes at least two addresses.
  • a space is a collection of subnets that you can create with MAAS, understanding that each subnet can belong to only one space. Spaces allow multiple subnets to communicate without requiring a direct network path between them.
  • a zone is also an ad-hoc collection, but one which groups individual nodes, rather than subnets. MAAS allows you to create and edit zones at will.
  • a fabric is essentially a collection of trunked switches, allowing you to access a group of VLANs.

Here is a diagram that helps to illustrate these concepts:

Be aware that these network settings are spread across several web UI configuration pages. The Zones page, for example, enables you to see how many machines, devices and controllers are using a zone, and allows you to add and edit zones. The Subnets page, shown below, provides access to fabric, VLAN, subnet and spaces configuration.

Deployment

MAAS-managed machines are listed – and operated on – from the Machines page, making it one of the most important screens in the MAAS web UI:

If you are testing MAAS using virtual machines, the machines appear here as soon as they boot. New machines are added automatically when they first connect to your network. Alternatively, the ‘Add hardware’ menu lets you add machines manually, via their MAC address.

After you configure power and interfaces, MAAS must commission machines to retrieve CPU, memory and storage information. From this point, you can command MAAS to acquire, test, deploy and release these machines as you work with your MAAS cloud.

While you are testing MAAS, be sure to check out filters, which can narrow your view based on both tags and hardware characteristics. You can select and manage machines in either filtered or full views.

Images

When it comes to running applications, MAAS can easily deploy any supported variant of Ubuntu, including LTS and non-LTR versions for x86, ARM, PPC and s390x systems. You can also deploy several other operating systems to your machines, including CentOS 7, CentOS 6, Windows, RHEL, and ESXi images, via Ubuntu Advantage^.

VM hosts

VM hosts can give you greater control over your hardware. A VM host is a collection of individual virtual machines. You can use a VM host to compose machines into an abstraction of resources that functions like a physical machine – without building one!

It’s easy to add a virsh VM host: click the “Add KVM” button on the “KVM” page of the web UI, give the VM host a name, and select as the VM host type. You will also need to enter the address for the KVM host; this address will look something like 'qemu+ssh://@10.249.0.2/system, where the paasword will be the same password ` uses to log into the host.

After you create a VM host, you compose hardware by selecting the VM host, and then selecting “Compose” from the Action menu. You can configure composed hardware as desired, including the number of cores, CPU speed, RAM and combined storage. Then just click “Compose machine”, and MAAS will combine resources to create a new, single entity that can be used just like any other machine. VM hosts abstract multiple resources:

into pools of composable hardware:

There you have it: A quick tour of MAAS and its capabilities. Read on through the documentation to learn more.


Last updated 3 days ago.