[Openstack-operators] [puppet] module dependencies and different openstack versions

Sam Morrison sorrison at gmail.com
Mon Jul 27 23:10:20 UTC 2015


> On 27 Jul 2015, at 11:25 pm, Emilien Macchi <emilien at redhat.com> wrote:
> 
> 
> 
> On 07/27/2015 02:32 AM, Sam Morrison wrote:
>> We currently use our own custom puppet modules to deploy openstack, I have been looking into the official openstack modules and have a few barriers to switching.
>> 
>> We are looking at doing this at a project at a time but the modules have a lot of dependencies. Eg. they all depend on the keystone module and try to do things in keystone suck as create users, service endpoints etc.
>> 
>> This is a pain as I don’t want it to mess with keystone (for one we don’t support setting endpoints via an API) but also we don’t want to move to the official keystone module at the same time. We have some custom keystone stuff which means we’ll may never move to the official keystone puppet module.
> 
> Well, in that case it's going to be very hard for you to use the
> modules. Trying to give up forks and catch-up to upstream is really
> expensive and challenging (Fuel is currently working on this).
> 
> What I suggest is:
> 1/ have a look at the diff between your manifests and upstream ones.
> 2/ try to use upstream modules with the maximum number of classes, and
> put the rest in a custom module (or a manifest somewhere).
> 3/ submit patches if you think we're missing something in the modules.
>> The neutron module pulls in the vswitch module but we don’t use vswitch and it doesn’t seem to be a requirement of the module so maybe doesn’t need to be in metadata dependencies?
> 
> AFIK there is no conditional in metadata.json, so we need the module
> anyway. It should not cause any trouble to you, except if you have a
> custom 'vswitch' module.

Yeah it would be nice if you could specify dependencies as well as recommended much like debian packages do. We use librarian-puppet to manage all our modules and you can’t disable it installing all the dependencies. But that is another issue…

>> It looks as if all the openstack puppet modules are designed to all be used at once? Does anyone else have these kind of issues? It would be great if eg. the neutron module would just manage neutron and not try and do things in nova, keystone, mysql etc.
> 
> We try to design our modules to work together because Puppet OpenStack
> is a single project composed of modules that are supposed to -together-
> deploy OpenStack.

All the puppet modules we use are very modular (hence the name), the openstack modules aren’t at this stage. Ideally each module would be self contained and then if people wanted to deploy “openstack” there could be an “openstack” module that would pull in all the individual project modules and make them work together.

It’s the first tip for writing a module listed at https://docs.puppetlabs.com/puppet/latest/reference/modules_fundamentals.html#tips

I guess I’m just wondering if other people are having the same issue I am? and if so is there a way forward to make the puppet modules more modular or do I just stick with my own modules.

> In your case, I would just install the module from source (git) and not
> trying to pull them from Puppetforge.
> 
>> 
>> The other issue we have is that we have different services in openstack running different versions. Currently we have Kilo, Juno and Icehouse versions of different bits in the same cloud. It seems as if the puppet modules are designed just to manage one openstack version? Is there any thoughts on making it support different versions at the same time? Does this work?
> 
> 1/ you're running Kilo, Juno and Icehouse in the same cloud? Wow. You're
> brave!

We are a large deployment spanning multiple data centres and 1000+ hosts so upgrading in one big bang isn’t an option. I don’t think this is brave it is the norm for people running large openstack clouds in production.

> 2/ Puppet modules do not hardcode OpenStack packages version. Though our
> current master is targeting Liberty, but we have stable/kilo,
> stable/juno, etc. You can even disable the package dependency in most of
> the classes.

The packages aren’t the issue it’s more the configs that get pushed out and so on, when config variables change location etc. with different versions this becomes hard.

> I'm not sure this is an issue here, maybe a misunderstanding of how to
> use the modules.
> 
> Good luck,

Thanks,

Sam




More information about the OpenStack-operators mailing list