[openstack-dev] [puppet] [Swift] Multiple proxy recipes will create out of sync rings

Mark Kirkwood mark.kirkwood at catalyst.net.nz
Fri Jun 12 06:01:54 UTC 2015

On 12/06/15 17:27, Mark Kirkwood wrote:
> I've looking at using puppet-swift to deploy a swift cluster.
> Firstly - without
> http://git.openstack.org/cgit/stackforge/puppet-swift/tree/tests/site.pp
> I would have struggled a great deal more to get up and running, so a big
> thank you for a nice worked example of how to do multiple nodes!
> However I have stumbled upon a problem - with respect to creating
> multiple proxy nodes. There are some recipes around that follow on from
> the site.pp above and explicitly build >1 proxy (e.g
> https://github.com/CiscoSystems/puppet-openstack-ha/blob/folsom_ha/examples/swift-nodes.pp)
> Now the problem is - each proxy node does a ring builder create, so ends
> up with *different* builder (and therefore) ring files. This is not
> good, as the end result is a cluster with all storage nodes and *one*
> proxy with the same set of ring files, and *all* other proxies with
> *different* ring (and builder) files.
> I have used logic similar to the attached to work around this, i.e only
> create rings if we are the 'ring server', otherwise get 'em via rsync.
> Thoughts?

I should have noted that the previously mentioned site.pp introduced the 
idea of a ringmaster or ringserver host, and I made use of that i.e only 
one proxy actually builds the rings.

Also I see in my effort to provide a simple fragment I left off a $ in 
front of some variables, and I should probably have defined the 
ringserver ip to make it clear what was happening, e.g:

$ringserver_local_net_ip = ''
if $ipaddress_eth0 == $ringserver_local_net_ip {



More information about the OpenStack-dev mailing list