Making some headway, I now have a work-around but would like to know
the real reason since my work around involves modifying the Puppet
code.
Here is the issue in: /usr/local/lib/ruby/site_ruby/1.8/puppet/util.rb
# The idea here is to avoid IO#read whenever possible.
output_file="/dev/null"
error_file="/dev/null"
if ! arguments[:squelch]
require "tempfile"
output_file = Tempfile.new("puppet")
error_file=output_file if arguments[:combine]
end
What appears to be happening is that the output_file variable gets
assigned nothing. So farther down when the following is called:
$stdout.reopen(output_file)
It errors with an ArgumentError.
To get around this I just changed to $stdout.reopen("/dev/null").
On Mar 1, 11:44 am, cyrus <[email protected]> wrote:
> More info. It appears it has to do with the Ruby I compiled. I am
> running RHE5 which only comes with Ruby 1.8.5. Since I was
> experiencing issues with Store Configs I wanted to update to 1.8.7 so
> I could use the latest ActiveRecord, etc. Therefore I download the
> Ruby 1.8.7 source and compile and installed into /usr/local/bin. If I
> run using that ruby interpreter I get the error below. If I switch
> back to the RPM based one in /usr/bin it runs.
>
> Is there some add-on I need for Ruby? Does Puppet not work with 1.8.7?
>
> On Mar 1, 10:40 am, cyrus <[email protected]> wrote:
>
> > I have some more info.
>
> > notice: Starting Puppet master version 2.6.5
> > info: mount[files]: allowing * access
> > debug: No modules mount given; autocreating with default permissions
> > debug: No plugins mount given; autocreating with default permissions
> > debug: Finishing transaction 23799637825120
> > info: access[^/catalog/([^/]+)$]: allowing 'method' find
> > info: access[^/catalog/([^/]+)$]: 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 no
> > info: access[/certificate/ca]: allowing 'method' find
> > info: access[/certificate/ca]: allowing * access
> > info: access[/certificate/]: adding authentication no
> > info: access[/certificate/]: allowing 'method' find
> > info: access[/certificate/]: allowing * access
> > info: access[/certificate_request]: adding authentication no
> > info: access[/certificate_request]: allowing 'method' find
> > info: access[/certificate_request]: allowing 'method' save
> > info: access[/certificate_request]: allowing * access
> > info: access[/]: adding authentication any
> > info: Inserting default '/status'(auth) acl because none where found
> > in '/puppet/development/auth.conf'
> > info: mount[files]: allowing * access
> > info: Expiring the node cache of lv1764p.xxxxxxx.com
> > info: Not using expired node for lv1764p.xxxxxx.com from cache;
> > expired at Tue Mar 01 10:36:31 -0700 2011
> > debug: Executing '/usr/local/bin/external-node lv1764p.xxxxx.com'
> > wrong number of arguments (2 for 1)
> > err: Failed to find lv1764p.xxxxxx.com via exec: Execution of '/usr/
> > local/bin/external-node lv1764p.xxxxx.com' returned 1:
> > err: Could not find node 'lv1764p.xxxxxx.com'; cannot compile
>
> > Notice the wrong number of arguments (2 for 1) message.
>
> > On Mar 1, 8:59 am, cyrus <[email protected]> wrote:
>
> > > Yes. The file is executable by everyone. Plus this worked prior to
> > > installing Ruby 1.8.7 and Puppet 2.6.4.
>
> > > On Feb 28, 3:40 pm, Nan Liu <[email protected]> wrote:
>
> > > > On Mon, Feb 28, 2011 at 3:36 PM, cyrus <[email protected]> wrote:
> > > > > I recently moved to Puppet 2.6.4. Prior to this I was using the
> > > > > available RPMS for RHEL which were 2.6.3. The reason I moved to the
> > > > > source 2.6.4 is that I wanted to update to Ruby 1.8.7 to see if that
> > > > > corrected the errors I was getting when trying to use Store Configs.
>
> > > > > Anyways, I compiled Ruby 1.8.7 from source into /usr/local/bin. I then
> > > > > installed Facter and Puppet into the same prefix.
>
> > > > > However now I can not get external nodes to work. On the client it
> > > > > gives:
>
> > > > > err: Could not retrieve catalog from remote server: Error 400 on
> > > > > SERVER: Could not find node 'lv00052p.encana.com'; cannot compile
>
> > > > > From the log I see:
>
> > > > > Feb 28 15:29:55 ls1313p puppet-master[20112]: Executing '/usr/bin/
> > > > > cobbler-ext-nodes lv00052p.encana.com'
> > > > > Feb 28 15:29:55 ls1313p puppet-master[20112]: Failed to find
> > > > > lv00052p.encana.com via exec: Execution of '/usr/bin/cobbler-ext-nodes
> > > > > lv00052p.encana.com' returned 1:
> > > > > Feb 28 15:29:55 ls1313p puppet-master[20112]: Could not find node
> > > > > 'lv00052p.encana.com'; cannot compile
>
> > > > > However, if I run
>
> > > > > /usr/bin/cobbler-ext-nodes lv00052p.encana.com
>
> > > > Can you execute this as the puppet user? If you run passenger, the
> > > > owner of the config.ru file?
>
> > > > Thanks,
>
> > > > Nan
>
> > > > > By hand it returns error code 0 and the following results:
>
> > > > > classes: [dev_wes]
> > > > > parameters: {env: dev, from_cobbler: 1, media_path: /ks/dist/dev-ks-
> > > > > rhel-x86_64-server-5-u5,
> > > > > org: 1, passwd_mode: compat, redhat_management_type: 'off', stype:
> > > > > wes}
>
> > > > > This all worked prior to upgrading to 2.6.4.
>
> > > > > Also, my config is:
>
> > > > > [main]
> > > > > # The Puppet log directory.
> > > > > # The default value is '$vardir/log'.
> > > > > logdir = /var/log/puppet
>
> > > > > # Where Puppet PID files are kept.
> > > > > # The default value is '$vardir/run'.
> > > > > rundir = /var/run/puppet
>
> > > > > # Where SSL certificates are kept.
> > > > > # The default value is '$confdir/ssl'.
> > > > > ssldir = $vardir/ssl
>
> > > > > [agent]
> > > > > # The file in which puppetd stores a list of the classes
> > > > > # associated with the retrieved configuratiion. Can be loaded in
> > > > > # the separate ``puppet`` executable using the ``--loadclasses``
> > > > > # option.
> > > > > # The default value is '$confdir/classes.txt'.
> > > > > classfile = $vardir/classes.txt
>
> > > > > # Where puppetd caches the local configuration. An
> > > > > # extension indicating the cache format is added automatically.
> > > > > # The default value is '$confdir/localconfig'.
> > > > > localconfig = $vardir/localconfig
>
> > > > > [master]
> > > > > # The main Puppet configuration directory. The default for this
> > > > > # parameter is calculated based on the user.
> > > > > confdir = /puppet/production
>
> > > > > # Where Puppet stores dynamic and growing data. The default for
> > > > > this
> > > > > # parameter is calculated specially, like confdir.
> > > > > # The default value is '/var/lib/puppet'.
> > > > > vardir = /var/lib/puppet
>
> > > > > # external node lookup via cobbler
> > > > > external_nodes = /usr/bin/cobbler-ext-nodes
> > > > > node_terminus = exec
>
> > > > > reports = tagmail
> > > > > tagmap = $confdir/tagmail.conf
>
> > > > > # enable store configs
> > > > > #storeconfigs = true
> > > > > # use Postgres for store configs
> > > > > #dbadapter = postgresql
> > > > > #dbuser = puppet
> > > > > #dbpassword = puppet
> > > > > #dbserver = ls00034p
>
> > > > > [development]
> > > > > manifest = $confdir/manifests/dev_site.pp
>
> > > > > [tqa]
> > > > > manifest = $confdir/manifests/tqa_site.pp
>
> > > > > Any help would be appreciated.
>
> > > > > Thanks
>
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > > > Groups "Puppet Users" group.
> > > > > To post to this group, send email to [email protected].
> > > > > To unsubscribe from this group, send email to
> > > > > [email protected].
> > > > > For more options, visit this group
> > > > > athttp://groups.google.com/group/puppet-users?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.