puppet kick returns "Error: Could not find indirection 'run' / testip.example.com finished with exit code 2"
|Assignee:||Josh Cooper||% Done:|
|Affected Puppet version:||3.0.0||Branch:||https://github.com/puppetlabs/puppet/pull/1200|
Would like to be able to use “puppet kick testip.example.com”.
Using CentOS6.3 on both puppetmaster and node with puppet 3rc3 from yum.puppetlabs.com.
IPtables is not running on any of them.
Bottom of node /etc/puppet/auth.conf
path /run auth yes allow puppet.imm.dtu.dk path / auth any
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 testip.example.com --debug --trace --foreground Triggering testip.example.com testip.example.com finished with exit code 2 Failed: testip.example.com
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 puppet.imm.dtu.dk 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'
#3 Updated by eric sorenson about 1 year ago
- Affected Puppet version deleted (
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
#5 Updated by eric sorenson about 1 year ago
- Assignee changed from eric sorenson to Andrew Parker
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
lib/puppet/run.rb:66 is initialized with a key name pluginsync, whose value is the pluginsync setting; but the
initialize method only accepts
:ignoreschedules as valid options, not
:pluginsync. The originating change is from a fix for #15668, here: https://github.com/puppetlabs/puppet/commit/62420c6ff02133e7bf6254cff83ddb3511a1ea41#L6L66 — 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.
#10 Updated by Josh Cooper about 1 year 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 https://github.com/puppetlabs/puppet/commit/3aaa582
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.
puppet kick --ignoreschedules is still broken and has been since at least 2.6.4, see #5975.
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.