go-puppet-bolt is a pragmatic, pure-Go (CGO_ENABLED=0) port of the core of Puppet Bolt, the agentless orchestrator. It parses Bolt inventory, tasks and plans and runs them over pluggable transports โ with no Ruby runtime and no cgo, so it cross-compiles to every 64-bit Go target and WebAssembly and links into a static binary. Inventory v2 resolves effective config / facts / vars through the group hierarchy and selects targets by name, alias, group or glob; tasks validate arguments against declared parameter types; YAML plans run an ordered sequence of task / command / script / eval / plan / resources / message steps; Puppet-language (.pp) plans run through go-puppet/puppet with their plan functions dispatched to real targets; apply blocks compile a catalog and report; and an Executor runs work across targets โ over a host-local, a full SSH or a full WinRM transport โ into a ResultSet. Its non-stdlib dependencies are all pure Go. 100% coverage, six arches.
Inventory (v2) ready
Targets, nested groups, per-group / per-target config / facts / vars / features, effective-value resolution through the hierarchy (deep merge, closest group wins, target overrides all), and target selection by name / alias / group / glob (TargetsForQuery).
Tasks ready
Parses the Bolt task *.json metadata shape (typed parameters, input_method, supports_noop, implementations, files) and validates arguments against the declared parameter types.
YAML plans ready
plan.yaml parameters plus an ordered list of task / command / script / eval / plan / resources / message steps with targets, per-step parameters and a return expression, executed by a step runner.
Transports & executor ready
A Transport interface with a host-local LocalTransport (injectable CommandRunner seam), a full pure-Go SSH transport (SSHTransport, over golang.org/x/crypto/ssh) and a full pure-Go WinRM transport (WinRMTransport, WS-Management over net/http, with basic / negotiate (NTLM) / ssl auth); an Executor runs a command, script or task across targets into a ResultSet.
Puppet-language plans & apply ready
Puppet-language (.pp) plans run through go-puppet/puppet (RunPuppetPlan), with run_task / run_command / run_script / get_targets / apply dispatched to real targets; apply blocks and the resources step compile a catalog and report (ApplyCatalog). Remote resource enforcement (needs a Puppet agent), WinRM Kerberos/CredSSP and PuppetDB _plugin resolvers are documented boundaries.
- ready capability complete (exit criteria met, nothing material left)
- active in progress (substantial work shipped, not yet finished)
- planned not started yet (or documented deferral)
The Bolt orchestration engine of the go-puppet-bolt org: inventory, task and plan (YAML and Puppet-language) parsing plus an executor over local, SSH and WinRM transports, in pure Go. Part of the pure-Go Puppet stack alongside go-facter, go-hiera, go-pcore and go-puppet.