Hey Ramin and Michael,

thanks for your replies.

On 07/17/2015 11:53 PM, Ramin K wrote:
> I wrote a how-to on using different Rubies for your Puppet master and
> am using it to run a Ruby 2.1.6/Puppet 3.7.x master. I would attempt
> something similar in your case.
>
> http://ask.puppetlabs.com/question/16983/performance-improvements-without-updating-to-puppet-server/
>
>
> Install Passenger 4.x via packages. Doesn't need to be built on the
> Ruby you plan to use.
> Point to /opt/puppetlabs ruby via PassengerRuby vhost directive.
>
> Other than those two steps, it sounds like you're pretty close.

Yes, this does look pretty similar to what I attempted. Thanks for this
guide!
Things I learend:
1. Use the rack gem (as in your Gemfile) - this actually enabled
nginx/passenger to load Puppet for me.
2. Passenger 5 may have issues.

The latter is a little tough to solve with nginx, because I rely on
packages from Phusion themselves. Those currently come with Passenger 5.
However, I can reproduce the problems with Passenger 4 on an older
Debian 7 installation. So I'm ruling out Passenger 5 as the immediate
issue at this time.

On 07/18/2015 12:32 AM, Michael Stahnke wrote:
> For the AIO, you can certainly get passenger working. (Although we'd
> love to hear why PuppetServer isn't working or what you want).

Oh, puppetserver is working like a charm. I'm putting together
alternative instructions for nginx/passenger though, for those who have
reservations against the JVM.

This worked great with Puppet 3.x, so I hoped I could repeat with Puppet
4, but it proves more challenging.

>
> Config files on a gist: 
>
> https://gist.github.com/stahnma/cf89dfa79b053f138eb1
>
> This should get you most of the way there. You might have to sub out
> passenger versions or something. 
>
> export PATH=/opt/puppetlabs/puppet/bin:$PATH
> # install passenger
> gem install --no-rdoc --no-ri passenger
> # you need gcc, apr or build-essential installed
> # this command is different if using nginx
> passenger-install-apache2-module --languages ruby -a

I went for nginx packages from Phusion. From what I understand, regular
nginx cannot just load Passenger as a module. But I may look into
alternative ways of installation if this doesn't work.

> # create a puppet user
> # Add our user and group
> if getent group 'puppet' &> /dev/null; then
>   /usr/sbin/groupmod  --system 'puppet'
> else
>   /usr/sbin/groupadd  --system 'puppet'
> fi
> if getent passwd 'puppet' &> /dev/null; then
>   /usr/sbin/usermod  --system --gid 'puppet' --home
> '/opt/puppetlabs/server/data/puppetmaster' --shell '/usr/sbin/nologin'
> 'puppet'
> else
>  /usr/sbin/useradd  --system --gid 'puppet' --home
> '/opt/puppetlabs/server/data/puppetmaster' --shell '/usr/sbin/nologin'
> 'puppet'
> fi

Is it a design decision that the puppet-agent AIO package doesn't handle
this?

I realize that WEBrick is deprecated, but support is still there. It
strikes me as odd that the standalone master cannot operate after AIO
installation without the user performing the above steps manually.

As an aside - as far as I know, the Puppet master runs a catalog on
startup (before dropping privileges?) so should it not be able to take
care of this by itself?

> # create public dir
> mkdir -p/opt/puppetlabs/server/data/puppetmaster/public
> mkdir -p /opt/puppetlabs/server/data/puppetmaster
> mkdir -p /var/log/puppetlabs/puppetmaster

Done.

> chown puppet:puppet /opt/puppetlabs/server/data/puppetmaster/public
> /opt/puppetlabs/server/data/puppetmaster
> /var/log/puppetlabs/puppetmaster
> /opt/puppetlabs/server/data/puppetmaster/config.ru <http://config.ru>
> cp -p ./config.ru <http://config.ru>
> /opt/puppetlabs/server/data/puppetmaster/config.ru <http://config.ru>

Where exactly is this config.ru from? Again, it is quite definitely not
part of the PC1 packages for Debian.

> cp -p ./passenger-apache.conf
> /etc/apache2/sites-available/puppet-passenger
> sed -i 's/__PASSENGER_VERSION__/5.0.16/g
> /etc/apache2/sites-available/puppet-passenger

Eh, sure...for nginx there is not much by way of configuration
templates. I managed to compile one for the original Puppet Essentials
book that worked with Puppet 3.

It pretty much works for Puppet 4, but now I get the most informative
stack ever.

[ 2015-07-18 02:40:57.4131 3254/7fc55d886700 App/Implementation.cpp:303
]: Could not spawn process for application /etc/puppetlabs/puppet/rack:
An error occured while starting up the preloader.
  Error ID: 8013a2ba
  Error details saved to: /tmp/passenger-error-dMKrUn.html
  Message from application: exit (SystemExit)
  /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:452:in `exit'
  /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:452:in
`rescue in exit_on_fail'
  /opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util.rb:438:in
`exit_on_fail'
 
/opt/puppetlabs/puppet/lib/ruby/vendor_ruby/puppet/util/command_line.rb:66:in
`execute'
  config.ru:44:in `block in <main>'

(/etc/puppetlabs/puppet/rack is indeed where I created the rack root.)

What I did to get this far without loading errors:
* change passenger_ruby to /opt/puppetlabs/...
* created puppet user/group
* get config.ru from github (current master)
* install 'rack' gem in /opt/puppetlabs/...

I'm using PC1. Above error gets produced on
1. Debian 7 w/ nginx 1.6.1 and Passenger 4.0.52 and
2. Debian 8 w/ nginx 1.8.0 and Passenger 5.0.14

Thanks and regards,
Felix

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/55A9B120.3050409%40Alumni.TU-Berlin.de.
For more options, visit https://groups.google.com/d/optout.

Reply via email to