Hey!
Sorry I’ve been slow on the draw since the OpenStack summit - I am finally on the plane on the way home right now - haven’t been there in about 6 weeks. So I owe everyone a write up of what we discussed there, what was agreed on and the overall strategy.
Short version:
-
all modules should go into upstream ansible repo
-
roles and similar should be hacked on in OpenStack/stackforge repos, and we’ll add some automation to publish them to galaxy
-
both want to be fully integration tested in OpenStack Infra CI - as well as as much as possible in ansible’s CI (we should get double coverage that way)
Module org thoughts:
-
modules tend to fall into two categories:
-
modules that are for people deploying/managing an OpenStack Cloud
-
modules that are for people deploying/managing workloads ON an OpenStack cloud
All of them want a prefix - so os_ or openstack_ similar to rax_ and gce_ (I think most have been more interested in os_)
Things for deployers, on the other hand, should be specific - so managing a keystone tenant should really be os_keystone_tenant - because guess what, you’re the deployer, you DO need to know what implementation choices you’ve made. There are currently three sets of modules in three different places that are working on this:
Before we suck any of these into ansible itself, we need to align on what we want the strategy to be, if any, in terms of convergence (there isn’t consensus on the topic, so blessing one in the ansible tree itself seems rather premature - but everyone in Paris seemed keen on reaching consensus) There’s going to be at least some pain all the way around no matter which direction we go because of the intent to prefix openstack things in the ansible tree - so ursula’s cinder_volume_group will want to become os_cinder_volume_group.
Things for end-consumers should not use code names, but should reference the concept. So, to spin up a vm, one would expect to use os_compute rather than os_nova. This allows for some richer implementation flexibility for things like images that might be able to use glance directly or might have to go through nova and that a user should not really need to care about. It also allows us to avoid getting screwed by name changes brought on by trademark issues. So far the list of openstack projects where this has happened is quantum/neutron, moniker/designate, reddwarf/trove and savana/sahara. We can also take advantage of the new aliasing feature in 1.8, but let’s just do it cleanly in the first place since these are the most likely to be used by sets of people not following the internal politics of OpenStack.
Initial reworkings with that in mind are up for review on extras, but it would be great to get a few more people to bang on them before we merge them:
https://github.com/ansible/ansible-modules-extras/pull/92
There were a couple of attempts to do this by morphing the old ones, but the structure of them was such that the code providing compatability with an old model (no keystone v3, no support for multi-cloud, etc) got so hariy so quickly that a clean break and a deprecation of the existing modules was discussed as the cleanest way forward. SO - the new modules should keep in mind that ansible has much stronger backwards compat stances than OpenStack upstream and need to be done with flexibility and the future in mind. We’ll carry the cost of maintenance of the old deprecated ones for a good while so that no one gets screwed.
I will be actively hacking on this again this weekend now that I’ll finally be home - but I’d REALLY love to crank on this with other folks. There is an #openstack-ansible channel where folks are hacking on stackforge/os-ansible-deployment
When I’m not crammed in a tiny seat on a plane, I’ll write this all up on a wiki to make sure we’re all good to go.
Monty