Currently puppet changes are deployed via the puppet-merge shell script (which some help of a corresponding Python script). In addition this script also merges changes for the public "private" repository (which holds stub secrets). This script can only be run from puppetmaster1001 to ensure locking consistency.
For Puppet changes it compares the repository state between what is found in git head and what is currently deployed to the Puppet servers. The user is then prompted for verifying these changes and the selected sha1 of the repository state is then written to config-master (and all other puppet servers sync to that sha1 of the repository).
Since we have have locking in Spicerack we can rely on it for merging Puppet changes and move Puppet merges to a cookbook.
Initially we could start with just moving the labsprivate functionality to the cookbook and then puppet.git in a second step.
As a future buildout step this cookbook could also adopt the sync of the private repository as well. It currently syncs via git hooks, which is relatively error-prone.