Custom storage/network layouts

This is a feature request for handling network and storage config in a less manual way.

Currently, node configuration is done either via the web GUI, or via the maas CLI.
Whenever there’s a need to expand the datacenter with similarly configured nodes, I face the following two problems:

  1. extracting the configuration of the “reference” nodes
  2. implementing said configuration for the additional nodes

The first problem can be solved via the CLI + parsing, but knowing which existing node to use as a reference may be non-trivial: judicious use of tags can help, but since tags are not inherently connected to configurations, there is no way to be sure that all nodes tagged in the same way are indeed configured identically.
Obviously, a human readable config can also be stored elsewhere, but that invalidates the idea of maas as single source of truth.

The solution to the second problem involves creating extra tooling around the CLI, which will probably need to parse a description of the configuration, then compose and execute the CLI commands needed to implement it.

I believe both processes could be greatly simplified by being able to store layouts[*] for both networking and storage configs directly in maas. The layouts could then be applied to (groups of) machines, limiting the need for any external scripting.

This feature request constitutes a superset of what was requested in lp#1641913.
This feature request was originally filed as lp#1793310.

[*] I am aware of maas storage layouts, but I believe it is not possible to create new ones

5 Likes

Are you aware of the node “cloning” API? See /MAAS/api/2.0/machines/?op=clone section of https://maas.io/docs/api

Yes, I’m aware of the cloning functionality. As far as I know it was requested and implemented to have something quickly while actual templates/layouts get fleshed out.
I think cloning is very useful, but kind of a workaround. Layouts as abstract storage/networking reference configurations would provide a cleaner and clearer concept: users would associate layouts to (sets of) machines instead of copypasting existing setups, which in my opinion would provide a better overall experience.

4 Likes

It’s really helpful feature request. We need storage and networking layouts (templates) to simplify processes.

2 Likes

I would even go a bit further ans would love some kind of “machine templates” based on a few constraints like :

  • Machine model (Like Dell R740, HP DL380-gen10, …)
  • Storage configuration (number of disks, disk type, …)
  • CPU
  • memory size
  • accelerators (GPU, fPGA, …)

Then create a machine model based on these items and thanks to that, auto apply (or assist apply) to machines batch at once.
We could also include some default tags attached to the template so that, for example, machines with some specific storage configuration (many standalone SSDs for example) could match a “Ceph OSD” template and have them applied with some Ceph related tags automatically.