The Puppet Labs Issue Tracker has Moved:

This issue tracker is now in read-only archive mode and automatic ticket export has been disabled. Redmine users will need to create a new JIRA account to file tickets using See the following page for information on filing tickets with JIRA:

Bug #15717

puppet kick returns "Error: Could not find indirection 'run' / finished with exit code 2"

Added by Sandra Schlichting almost 4 years ago. Updated over 3 years ago.

Status:ClosedStart date:07/30/2012
Priority:NormalDue date:
Assignee:Josh Cooper% Done:


Target version:3.0.1
Affected Puppet version:3.0.0 Branch:
Keywords:puppet kick

We've Moved!

Ticket tracking is now hosted in JIRA:


Would like to be able to use “puppet kick”.

Using CentOS6.3 on both puppetmaster and node with puppet 3rc3 from

IPtables is not running on any of them.

Bottom of node /etc/puppet/auth.conf

path /run
auth yes

path /
auth any

Node /etc/puppet/puppet.conf


listen = true
report = true

I can do “puppet agent —test” on the node, and it pulls the changes fine.

If I on the puppetmaster do

[root@puppet ~]# puppet kick --debug --trace --foreground
Triggering finished with exit code 2

and on the node I see

[root@testip ~]# puppet agent --listen --debug --no-daemonize --verbose
Info: access[^/catalog/([^/]+)$]: allowing 'method' find
Info: access[^/catalog/([^/]+)$]: allowing $1 access
Info: access[^/node/([^/]+)$]: allowing 'method' find
Info: access[^/node/([^/]+)$]: allowing $1 access
Info: access[/certificate_revocation_list/ca]: allowing 'method' find
Info: access[/certificate_revocation_list/ca]: allowing * access
Info: access[/report]: allowing 'method' save
Info: access[/report]: allowing * access
Info: access[/file]: allowing * access
Info: access[/certificate/ca]: adding authentication any
Info: access[/certificate/ca]: allowing 'method' find
Info: access[/certificate/ca]: allowing * access
Info: access[/certificate/]: adding authentication any
Info: access[/certificate/]: allowing 'method' find
Info: access[/certificate/]: allowing * access
Info: access[/certificate_request]: adding authentication any
Info: access[/certificate_request]: allowing 'method' find
Info: access[/certificate_request]: allowing 'method' save
Info: access[/certificate_request]: allowing * access
Info: access[/run]: adding authentication any
Info: access[/run]: allowing 'method' save
Info: access[/run]: allowing access
Info: access[/]: adding authentication any
Info: Inserting default '/status' (auth true) ACL because none were found in '/etc/puppet/auth.conf'
Error: Could not find indirection 'run'

Related issues

Related to Puppet - Bug #15668: Revert #12127 - Puppet should not pluginsync on 'puppet a... Closed 07/24/2012
Related to Puppet - Feature #12127: implement local plugin syncing for apply Closed 01/24/2012


#1 Updated by eric sorenson almost 4 years ago

  • Status changed from Unreviewed to Accepted
  • Assignee set to eric sorenson

Andy mentioned he’d seen this as well. AFAIK not intentional.

#2 Updated by Nick Fagerlund almost 4 years ago

Huh, now that’s odd… it doesn’t show up on the indirection reference either. And never has, apparently. Why would that be?

#3 Updated by eric sorenson over 3 years ago

  • Affected Puppet version deleted (3.0.0rc3)

My git bisect on this identified this commit:

81c73fd0d0d0a9ad4a7f2cb5386d5956739a89aa is the first bad commit
commit 81c73fd0d0d0a9ad4a7f2cb5386d5956739a89aa
Author: Matt Robinson 
Date:   Tue Dec 27 23:25:25 2011 -0800

    (#8296) Remove XMLRPC code
    The XMLRPC code was left in place to ensure backward compatibility with
    Puppet 0.24.x clients, but 0.24.x clients haven't been able to talk to
    masters since 0.25.6 due to other bugs and incompatibilities.
    Therefore, the XMLRPC code has been dead code for a long time and
    removing it makes the codebase a lot easier to navigate.
    Paired with Patrick Carlisle 

:100755 100755 d015c4d3f33f9e5c834094e6a73662953015c15b 0dc2d52e38a88b86f5f48cdc36c1b182c41d3d99 M      install.rb
:040000 040000 300dcae9819251b1137488f19f7c6b642e93e4e1 114ccc16e35dc09b7177088bb82eb6c6be7e25c6 M      lib
:040000 040000 ac060dc0e2c48fca812fbd3e47716c13dbed169c 617b5fc16bf41a14139b7f4f2977f399a6f4ede6 M      spec
:040000 040000 b57d563cfc408f44b17c4ffca938c244bd895ad4 3d99684831994012edfcc892fb9b7e0b9758976b M      test

#4 Updated by eric sorenson over 3 years ago

  • Target version changed from 3.x to 3.0.x

#5 Updated by eric sorenson over 3 years ago

  • Assignee changed from eric sorenson to Anonymous

Daniel pointed the way here — nothing was requiring the model for the indirector with a require 'puppet/run' ; the fact that the xmlrpc handler was the only place in the agent application load path that did so had been latent in the 4000 deleted lines.

Once I added it to application/agent.rb, I got a new error:

Error: Could not intern from pson: Run does not accept pluginsync
/Users/eric/Sandbox/puppet/lib/puppet/run.rb:29:in `block in initialize'
/Users/eric/Sandbox/puppet/lib/puppet/run.rb:28:in `each'
/Users/eric/Sandbox/puppet/lib/puppet/run.rb:28:in `initialize'
/Users/eric/Sandbox/puppet/lib/puppet/run.rb:71:in `new'
/Users/eric/Sandbox/puppet/lib/puppet/run.rb:71:in `from_pson'
/Users/eric/Sandbox/puppet/lib/puppet/network/formats.rb:130:in `data_to_instance'
/Users/eric/Sandbox/puppet/lib/puppet/network/formats.rb:107:in `intern'
/Users/eric/Sandbox/puppet/lib/puppet/network/format_handler.rb:12:in `protect'

This is because the options hash in self.from_pson on lib/puppet/run.rb:66 is initialized with a key name pluginsync, whose value is the pluginsync setting; but the initialize method only accepts :tags and :ignoreschedules as valid options, not :pluginsync. The originating change is from a fix for #15668, here: — I believe this one line should be reverted but don’t understand the scope of #15668 well enough to be confident about it.

Passing to Andy who did the #15668 work.

#6 Updated by Anonymous over 3 years ago

I believe that it needs to have :pluginsync listed as a valid option. This is because the change that I made for #15668 pulled out the decision making for when to pluginsync to the callers.

#7 Updated by Anonymous over 3 years ago

  • Status changed from Accepted to In Topic Branch Pending Review
  • Branch set to

#8 Updated by eric sorenson over 3 years ago

  • Assignee changed from Anonymous to Josh Cooper
  • Target version changed from 3.0.x to 3.0.1

Josh to review and merge.

#9 Updated by eric sorenson over 3 years ago

  • Subject changed from Error: Could not find indirection 'run' / finished with exit code 2 to puppet kick returns "Error: Could not find indirection 'run' / finished with exit code 2"

#10 Updated by Josh Cooper over 3 years ago

  • Status changed from In Topic Branch Pending Review to Merged - Pending Release
  • Affected Puppet version set to 3.0.0

This is merged into 3.0.x in

During the removal of the XMLRPC code, a line requiring ‘puppet/run’ was accidentally removed, causing this issue. This commit restores puppet kick functionality on the remote agent side. It also adds an acceptance test to ensure that the remote agent responds to puppet kick requests.

Note that puppet kick --ignoreschedules is still broken and has been since at least 2.6.4, see #5975.

Although puppet kick accepts a —(no-)pluginsync command line argument, it is not meaningful, as the remote agent always determines whether or not to perform a pluginsync based on how it is configured. And in Puppet 3, pluginsync is enabled by default.

#11 Updated by Matthaus Owens over 3 years ago

  • Status changed from Merged - Pending Release to Closed

Released in Puppet 3.0.1-rc1

Also available in: Atom PDF