Custom storage/network layouts


#1

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


#2

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


#3

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.