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!