Undercloud Configuration Wizard

One of the first things a new user of TripleO has to do is write a configuration file for their undercloud. While this is not as complex as, say, writing a nova.conf, there is still some level of difficulty due to the need for consistency between different options, and some less than ideal overlap/inconsistency between the options themselves. In the interest of easing new users' introduction to TripleO as much as possible, I've written a tool to help create undercloud.conf.

This tool has actually existed for a while in a different form, but that one was a desktop PyQt application, which meant it was non-trivial for non-Linux users to run. To address that, I've ported it to a Pyramid application hosted on OpenShift so the wizard-y goodness can be available even to the desktop Linux non-believers. ;-)

The tool is beneficial for a few reasons. First, it generates a sane default configuration with enough ips allocated to the various DHCP ranges, and all of the inter-related values set in a consistent manner. Second, if the user makes modifications to the generated values, it validates that the values are still sane. It may not catch absolutely everything, but the most common mistakes are covered. Note that much of this validation is currently proposed for the undercloud install itself as well, so in the future it won't be necessary to use the wizard for a sanity check. However, I think the tool will still be useful as a way to create a valid starting point, and as a quick way to verify a configuration without actually running the undercloud install. It's also the only way for users of existing releases of TripleO to have validation.

Future Plans

Pretty much every time I show this to people, one of the first questions I get is "Can we integrate this into the upcoming UI?" The short answer is no. This tool is intended for use before the UI exists (it's creating the configuration to install the UI, among other things), so it can never exist in the TripleO UI proper. It is standalone by necessity.

I should note that I'm not sure whether the current location will be the long-term home for this. At some point it should probably be moved to a more official location where someone other than just me has access to manage it, but for now this works. I also need to figure out how to make the code publicly accessible so other people can contribute, since I think there are other useful features that could be added and it's anybody's guess whether I'll have time to do it myself.