Re: [Puppet Users] Installing only the puppet client

Forrest Aldrich
Sun, 17 Jan 2010 00:27:31 -0000

On 1/16/10 7:00 PM, James Turnbull wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 17/01/10 6:33 AM, Forrie wrote:
>
>> Is there a way to deploy/install only the client portion of puppet?
>>
> Not via install.rb
>
>
>> It''s possible I''m approaching this incorrectly,
though it doesn''t make
>> a lot of sense to install puppetmasterd on systems that are only
>> clients.    Another option, perhaps, is to have puppet actually update
>> the client portion on the managed systems.   Has anyone done this?
>>
> IMHO - yes - don''t install via source! It''s not scalable
and it
> leads to issues when upgrading.
>
> Use your operating system or distribution''s packaging system
instead.
>
> You can then easily use Puppet to manage itself on clients - in fact
> I recommend it as an approach.
>
>
>

Thanks for your reply!

I think having Puppet distribute itself to clients would be ideal.  One
less headache.

I generally don''t like to rely on external packaging for certain
software packages -- it complicates things when I want to keep up to
date; and then, when I do want more current code, I just end up
compiling it separately anyway.

Here''s what I''ve been working on today; perhaps
you''ll have some
feedback (it''s relevant to the post).   I''m installing ruby,
puppet,
gems (under ruby) under a central directory structure.   From there, I
can either rsync that to other systems or NFS mount it.  Then, use the
local system "alternatives" command to point the relevant executables
(and --slave definitions).  Each system can have it''s own puppet
configuration in /etc that''s managed via Puppet.  An example:

/local/company/puppet
     /sbin
     /bin

/local/company/ruby
     /bin
     /lib
     [ everything from ruby, including rubygems and individual gems ]

Using "alternatives", do something like this:

/usr/sbin/alternatives --install /usr/bin/ruby ruby
/local/company/ruby/bin/ruby 1 \
--slave /usr/bin/rdoc rdoc /local/company/ruby/bin/rdoc \
--slave /usr/bin/ri ri /local/company/ruby/bin/ri \
--slave /usr/bin/irb irb /local/company/ruby/bin/irb \
--slave /usr/bin/erb erb /local/company/ruby/bin/erb \
--slave /usr/bin/testrb testrb /local/company/ruby/bin/testrb

Of course, this relies upon a specific variant of Linux (in our case,
Redhat), but it could still work otherwise.

One problem I''ve observed is ruby will need to be "installed"
in
/local/company/ruby first, where I later rename it to ruby.1.8.7 with a
symlink of "ruby" so that the installation is consistent with shebang
paths.



Thanks,

Forrest