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']['config']['dataDir'] to the values you want, as well as
node['exhibitor']['transaction_dir'] (which directly corresponds to
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!