diff options
Diffstat (limited to 'vendor/supply_drop/lib/supply_drop/tasks.rb')
-rw-r--r-- | vendor/supply_drop/lib/supply_drop/tasks.rb | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/vendor/supply_drop/lib/supply_drop/tasks.rb b/vendor/supply_drop/lib/supply_drop/tasks.rb new file mode 100644 index 0000000..e73b280 --- /dev/null +++ b/vendor/supply_drop/lib/supply_drop/tasks.rb @@ -0,0 +1,96 @@ +Capistrano::Configuration.instance.load do + namespace :puppet do + set :puppet_source, '.' + set :puppet_destination, '/tmp/supply_drop' + set :puppet_command, 'puppet apply' + set :puppet_lib, lambda { "#{puppet_destination}/modules" } + set :puppet_parameters, lambda { puppet_verbose ? '--debug --trace puppet.pp' : 'puppet.pp' } + set :puppet_verbose, false + set :puppet_excludes, %w(.git .svn) + set :puppet_stream_output, false + set :puppet_parallel_rsync, true + set :puppet_parallel_rsync_pool_size, 10 + set :puppet_syntax_check, false + set :puppet_write_to_file, nil + set :puppet_runner, nil + set :puppet_lock_file, '/tmp/puppet.lock' + + namespace :bootstrap do + desc "installs puppet via rubygems on an osx host" + task :osx do + if fetch(:use_sudo, true) + run "#{sudo} gem install puppet --no-ri --no-rdoc" + else + run "gem install puppet --no-ri --no-rdoc" + end + end + + desc "installs puppet via apt on an ubuntu host" + task :ubuntu do + run "mkdir -p #{puppet_destination}" + run "#{sudo} apt-get update" + run "#{sudo} apt-get install -y puppet rsync" + end + + desc "installs puppet via yum on a centos/red hat host" + task :redhat do + run "mkdir -p #{puppet_destination}" + run "#{sudo} yum -y install puppet rsync" + end + end + + desc "checks the syntax of all *.pp and *.erb files" + task :syntax_check do + checker = SupplyDrop::SyntaxChecker.new(puppet_source) + logger.info "Sytax Checking..." + errors = false + checker.validate_puppet_files.each do |file, error| + logger.important "Puppet error: #{file}" + logger.important error + errors = true + end + checker.validate_templates.each do |file, error| + logger.important "Template error: #{file}" + logger.important error + errors = true + end + raise "syntax errors" if errors + end + + desc "pushes the current puppet configuration to the server" + task :update_code, :except => { :nopuppet => true } do + syntax_check if puppet_syntax_check + supply_drop.rsync + end + + desc "runs puppet with --noop flag to show changes" + task :noop, :except => { :nopuppet => true } do + transaction do + on_rollback { supply_drop.unlock } + supply_drop.prepare + supply_drop.lock + update_code + supply_drop.noop + supply_drop.unlock + end + end + + desc "applies the current puppet config to the server" + task :apply, :except => { :nopuppet => true } do + transaction do + on_rollback { supply_drop.unlock } + supply_drop.prepare + supply_drop.lock + update_code + supply_drop.apply + supply_drop.unlock + end + end + + desc "clears the puppet lockfile on the server." + task :remove_lock, :except => { :nopuppet => true} do + supply_drop.lock + end + end +end + |