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::orchestrator
class. -
From the Parameter name dropdown, select
plan_runner_active
and 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-runner
service.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.