Thanks Jacob. I will give this a go and see what happens.

Cheers.

On Thu, Nov 10, 2011 at 11:18 AM, Jacob Helwig <[email protected]> wrote:
> On 2011-11-09 13:38 , Tim Uckun wrote:
>> Hey guys.
>>
>> I am starting out with puppet and am in the process of writing a
>> bootstrap script for the clients and a capistrano recipe for the
>> server. I have the client bootstrap done which installs ruby, puppet,
>> sets a host name, and then points the client at the puppet server and
>> now I am in the process of setting up the puppet server.
>>
>> My first attempt was to set up a git project for puppet, an admin user
>> on the server and then use capistrano to deploy my puppet config and
>> all manifests into a directory in the admin users home. Basically this
>> would be the contents of the /etc/puppet directory. The idea was that
>> I would deploy to /home/admin_user/infrastructure and then symlink
>> that directory or /etc/puppet.  This didn't work because puppet blows
>> away the symlink and sets up a blank directory in /etc/puppet.
>>
>> So I am wondering what to do next. Some options...
>>
>> 1. I could use rsync after deploy to copy the contents to /etc/puppet
>> but I noticed that the manifests directory are owned by the user
>> puppet so I don't know how well that would work.
>> 2. I could manually set up a /etc/puppet/puppet.conf which points to
>> the manifests in the /home/admin directory and manage the puppet conf
>> with puppet.
>> 3. I could use something other than capistrano. I am familiar with
>> capistrano so I would prefer to stay with it but I am willing to learn
>> something else if it would be better.
>>
>> I also have a question as to whether the ssl directory should be
>> managed by puppet itself or me. I kind of presumed everything in
>> /etc/puppet would be managed by me and everything in /var/lib/puppet
>> would be managed by puppet is that right?
>>
>> So does anybody have a nice capistrano config.rb for puppet?
>>
>
> Dunno if it's the best way, but I went with #2 for my setup.  It's very
> basic, and has been working great for me.  Full setup below for the
> benefit of those that aren't familiar with Capistrano.
>
> Sorry for the line wrapping in the puppet.conf, but I haven't gotten
> Thunderbird fully trained yet.
>
> /etc/puppet/puppet.conf:
>
> [master]
>    manifestdir = /u/apps/puppet-manifest/current/manifests
>    modulepath  =
> /u/apps/puppet-manifest/current/modules:/usr/share/puppet/modules
>
>    config_version = 'cat /u/apps/puppet-manifest/current/REVISION'
>
> Capfile:
> require 'rubygems'
> require 'railsless-deploy'
>
> load 'deploy' if respond_to?(:namespace) # cap2 differentiator
> Dir[
>  'vendor/gems/*/recipes/*.rb',
>  'vendor/plugins/*/recipes/*.rb'
> ].each do |plugin|
>  load(plugin)
> end
>
> load 'config/deploy'
>
> config/deploy.rb:
> set :application, "puppet-manifest"
> set :repository,  <repo-here>
> set :scm,         :git
> set :branch,      'master'
> set :deploy_via,  :remote_cache
>
> # Needed to deploy vcsrepo (submodule)
> set :git_enable_submodules, true
>
> role :app, <puppet master's hostname>
>
> set :user,     'app'
> set :use_sudo, false
>
> default_run_options[:pty]   = true
> ssh_options[:forward_agent] = true
>
> # this tells capistrano what to do when you deploy
> namespace :deploy do
>
>  desc <<-DESC
> A macro-task that updates the code and fixes the symlink.
> DESC
>  task :default do
>    transaction do
>      update_code
>      symlink
>    end
>  end
>
>  task :update_code, :except => { :no_release => true } do
>    on_rollback { run "rm -rf #{release_path}; true" }
>    strategy.deploy!
>  end
>
>  after :deploy, 'deploy:cleanup'
> end
>
>
> --
> Jacob Helwig
> http://about.me/jhelwig
>
>

-- 
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.

Reply via email to