After working with binford2k on #puppet, we discovered two issues...
1. We had to explicitly add /var/lib/puppet/lib to the LOAD_PATH via the
config.ru file.
2. Since our Puppet masters use 'puppet apply' to execute their own
configurations locally, they were not populating /var/lib/puppet/lib at
all. It seems that 'puppet apply' dynamically figures out the LIB paths
properly, but even with the '--pluginsync' option it does not actually
populate /var/lib/puppet/lib at all. For now I've added a hack to our
servers to execute 'puppet plugin download' locally, but thats a real nasty
hack.
Based on the documentation, shouldn't the puppet master daemon be able to
autoload up the hiera/backend/rstag_backend.rb just like 'puppet apply'
does?
On Tuesday, May 6, 2014 10:36:05 AM UTC-7, Matt Wise wrote:
>
> Just to followup .. running a simple puppet apply on the puppet master
> works fine -- the module loads, it gets backend data properly. I just can't
> get it to work from within Unicorn for our remote clients.
>
> Here's our simple unicorn.conf:
>
> worker_processes 4
>> working_directory '/etc/puppet'
>> listen '/var/run/puppet/unicorn.sock', :backlog => 512
>> timeout 180
>> pid '/var/run/puppet/unicorn.pid'
>>
>> preload_app true
>> if GC.respond_to?(:copy_on_write_friendly=)
>> GC.copy_on_write_friendly = true
>> end
>> before_fork do |server, worker|
>> old_pid = "#{server.config[:pid]}.oldbin"
>> if File.exists?(old_pid) && server.pid != old_pid
>> begin
>> Process.kill("QUIT", File.read(old_pid).to_i)
>> rescue Errno::ENOENT, Errno::ESRCH
>> # someone else did our job for us
>> end
>> end
>> end
>
>
> and our config.ru:
>
> $0 = "master"
>> ARGV << "--confdir" << "/etc/puppet"
>> ARGV << "--rack"
>> ARGV << "--vardir" << "/var/lib/puppet"
>> require 'puppet/util/command_line'
>> require 'unicorn/worker_killer'
>> run Puppet::Util::CommandLine.new.execute
>> use Unicorn::WorkerKiller::MaxRequests, 2048 + rand(1024)
>> use Unicorn::WorkerKiller::Oom, (96 + rand(32)) * 1024**2
>
>
>
> On Tuesday, May 6, 2014 9:40:03 AM UTC-7, Matt Wise wrote:
>>
>> I've been writing a new Hiera backend
>> (here<https://github.com/Nextdoor/puppet_rightscale/blob/master/lib/hiera/backend/rstag_backend.rb>)
>>
>> and its working fine in all of my local and unit tests. I can run Puppet
>> Apply with an appropriate LOAD_PATH and it works just fine. However, when
>> we actually merged it in to run on our test puppet master, we ran into load
>> problems:
>>
>> Strace from Puppet Master trying to load rstag_backend:
>> here<http://pastebin.com/9wPDTVLj>
>> Hiera Config: here <http://pastebin.com/DaNywMX6>
>>
>> Based on my read of the docs:
>>
>> When using Hiera with Puppet, you can load backends from the lib
>>> directory of a Puppet module; however, these backends won’t be loaded when
>>> you run Hiera from the command line unless you specify that directory in
>>> your RUBYLIB environment variable.
>>
>>
>> We should be able to simply import our puppet module and use the
>> backend... but that doesn't seem to be the case. It does seem like I might
>> be able to simply add a symlink in the root of my Puppet code path from
>> *./hiera/backends/rstag_backend.rb* ->
>> *./modules/rightscale/lib/hiera/backends/rstag_backend.rb*, but that
>> doesn't seem like it should be necessary.
>>
>> Any thoughts?
>>
>> We're running Puppet 3.4.1 by the way..
>>
>
--
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-dev/3c08dafd-f18f-42c0-bb6d-cae35b225fdd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.