To sync your code across multiple masters and to make sure that code stays consistent, Code Manager relies on file sync and two different code directories: the staging directory and the live code directory.
Without Code Manager or file sync, Puppet code lives in the codedir, or live code directory, at
/etc/puppetlabs/code. But the file sync service looks for code in a code staging directory (
/etc/puppetlabs/code-staging), and then syncs that to the live codedir.
Code Manager moves new code from source control into the staging directory, and then file sync moves it into the live code directory. This means you no longer write code to the codedir; if you do, the next time Code Manager deploys code from source control, it overwrites your changes.
For more detailed information about how file sync works, see the related topic about file sync.
Don't directly modify code in the staging directory. Code Manager overwrites it with updates from the control repo. Similarly, don't modify code in the live code directory, because file sync overwrites that with code from the staging directory.