Zookeeper Exhibitor zoo.cfg

Anyone here using the exhibitor cookbook at
https://github.com/SimpleFinance/chef-exhibitor?

I need to have the cookbook use different values for dataDir and dataLogDir
in the /opt/zookeeper/zookeeper-3.4.6/conf/zoo.cfg file, that I presume the
exhibitor cookbook writes, ie:

#Auto-generated by Exhibitor - Wed Dec 02 19:24:50 UTC 2015#Wed Dec 02
19:24:50 UTC 2015

clientPort=2181
server.7=172.41.74.96:2888:3888
dataDir=/var/lib/zookeeper
syncLimit=5
tickTime=2000
initLimit=10
dataLogDir=/tmp/zookeeper

However, I can’t find where the file is being written in the exhibitor
cookbook. I can see the zookeeper cookbook uses a recipe called
config_render to write this config file, but the exhibitor cookbook doesn’t
seem to call it.

Thanks.
Doug

Doug,

We use that cookbook (in fact, I help maintain it) as well as the accompanying ZK cookbook. Unfortunately, the exhibitor cookbook is a bit of a mess, so I apologize.

It’s not Chef that generates that file, but Exhibitor, which is kinda its whole thing once it’s up & running. There’s a few places you can impact what values end up in play

You’ll want to be sure to set node['zookeeper']['log_dir'] and node['zookeeper']['config']['dataDir'] to the values you want, as well as node['exhibitor']['transaction_dir'] (which directly corresponds to log_dir) and node['exhibitor']['snapshot_dir'] (i.e., dataDir). This is redundant, but also reality.

Your first node will bootstrap, install ZK, install Exhibitor, and write out the default config that Exhibitor reads on first starting things up.

At this point, Chef ceases to control what config ZK gets, and Exhibitor takes over completely. You’ll need to navigate to the Exhibitor UI, and use their config pane to set any additional values.

I would strongly encourage using the S3-based shared config for Exhibitor to share the ZK config across your entire ZK/Exhibitor cluster. We use it at EverTrue and, while it seems a bit awkward, it plays to Exhibitor’s strengths, and we’ve been enjoying an extremely stable ZK cluster for almost two years now.

Our et_zookeeper cookbook does all of this for us, though I should note that it needs updating to use exhibitor ~> 0.7.0, due to some version issues with earlier versions of the zookeeper cookbook (versions < 3.0.0 try to install a no-longer-available version of ZK, and the exhibitor cookbook directly depends on zookeeper). So if you model your own wrapper for exhibitor on ours, mind that you update the dependency to exhibitor ~> 0.7.0 at least.

Hope this helps!