Running plans with pe-plan-runner
The pe-plan-runner service improves scalability and performance compared to the existing Puppet orchestrator service. Disabled by default, the pe-plan-runner service runs on the primary server, allowing concurrent execution of up to 100 plans, with potential for further scaling based on available primary server memory.
With pe-plan-runner enabled, you can continue to schedule and run plans using existing PE console workflows or orchestrator APIs, and any previously scheduled plans are automatically executed by pe-plan-runner.
To start running plans with pe-plan-runner instead of the orchestrator service:
-
Click Node groups > PE Infrastructure > PE Orchestrator.
-
Select the Classes tab and locate the
puppet_enterprise::profile::orchestratorclass. -
From the Parameter name dropdown, select
plan_runner_activeand enter true as the value. -
Click Add to node group and commit your changes.
pe-plan-runner, monitor memory usage on the primary server, as poorly optimized plans may adversely affect performance.pe-plan-runner is active:Plans run from a Ruby process directly on the primary server (i.e. not in the JVM or inside Puppet orchestrator). This is the
pe-plan-runnerservice.When an individual plan starts, the Ruby process controlling plans perform a
fork()to isolate that plan’s runtime environment.When a plan runs an action on targets, such as a task, it makes a request to the orchestrator, which spawns execution of that action on each target’s agent. The results of every single target are returned to the plan’s Ruby process and the plan loads the full result for each target into memory all at the same time. The results stay in memory for the lifetime of the plan.
Once the plan finishes, the Ruby process joins the plan’s individual
fork()and Ruby cleans up all the objects from the plan run, including all the target action results stored in memory.






