Running plans alongside code deployments
The orchestrator's file sync client has a built-in locking mechanism that ensures your plans run in a consistent environment state. The locking mechanism prevents plans from starting while a code deployment is in progress, and it prevents new code deployments from synchronizing while a plan is running. You can disable this locking mechanism if you want to run plans and deploy code simultaneously. Consider the tradeoffs before deciding whether to disable the file sync locking mechanism.
You might want to disable the file sync locking mechanism if:
- You want to allow code deployments to complete while plans are running.
- You want to allow plans to start while code deployments are in progress.
- Your code deployments don't frequently or substantially change the environment state that plans run in.
- You aren't concerned if the environment state changes (due to a concurrent code deployment) during a plan run.
When you disable the file sync locking mechanism, the environment states your plans run in might be inconsistent or change while the plans are starting, running, or finishing. This depends on when your code deployments happen and whether they happen while a plan is running. Puppet functions and plans that call other plans might behave unexpectedly if a code deployment occurs while a plan is running.
If it is important to you that your plans always run in a consistent environment state, you probably don't want to disable the file sync locking mechanism.
- In the PE console, go to .
- On the Classes tab, locate (or add) the
puppet_enterprise::profile::plan_executor
class, and set theversioned_deploys
parameter totrue
. The full declaration is:puppet_enterprise::profile::plan_executor::versioned_deploys: true
Setting this parameter totrue
disables the file sync client's locking mechanism that usually enforces a consistent environment state for your plans. The locking mechanism prevents plans from starting while a code deployment occurs and forces code deployments to wait while a plan is in progress.Tasks, scripts, and apply block compilations always use the latest synced version of your code, regardless of this setting. However, after you set
versioned_deploys
totrue
, Puppet functions and plans that call other plans also use the latest synced version of your code, instead of the version of the code that was present when the plan started. Due to the possibility for the code to change during the plan run, Puppet functions and plans that call other plans might behave unexpectedly if a code deployment occurs while a plan is running.If you want to enforce a consistent environment state for plans, set
versioned_deploys
tofalse
. If Code deployments time out while waiting for long-running plans to finish, adjust thetimeouts_sync
setting in your Code Manager parameters. - Commit your changes.
- The orchestrator server doesn't automatically restart after setting this
parameter, so you must restart the
pe-orchestration-services
service to finish applying the change. To do this, run the following command on the primary server:service pe-orchestration-services reload
Plans and code deployments now start and finish without blocking each other.