require 'yaml' require 'popen4' STDOUT.sync = true task :default => :setup ########################################################################## def run_command(cmd) cmdrun = IO.popen(cmd) output = cmdrun.read cmdrun.close if $?.to_i > 0 puts "count not run #{cmd}, it returned an error #{output}" exit 2 end puts "OK: ran command #{cmd}" end ########################################################################## hf = Dir.glob('puppet/ext/data/common.yaml') errors = [] desc 'Check Playbook Syntax' task :lint_hiera do hf.each do |playbook_file| begin YAML.load_file(playbook_file) rescue Exception => e errors << e.message end end if errors.empty? puts "Rake: #{hf.length} playbook files all checkout!" else errors.each do |err| puts "ERROR: YAML parse errors" puts err end exit 1 end end ########################################################################## desc 'Check Prereqs' task :check_prereqs do [ 'rvm', 'bundler', 'r10k' ].each do |st| cmdrun = IO.popen("type -a #{st} >/dev/null 2>&1") cmdrun.close if $?.to_i > 0 puts "Could not find binary #{st}" exit 2 end end puts "OK: we have everything we need" end desc 'Update the Puppet Modules' task :update_puppet do puts 'Rake: updating puppet modules' run_command('cd puppet && rm -rf modules/* && r10k puppetfile install') end task :bundle_gems do run_command('bundle install') end task :bundler_install do run_command('gem install bundler') end desc 'Setup' task :setup => [:check_prereqs, :bundler_install, :bundle_gems, :update_puppet, :lint_hiera ] do puts 'Rake: Building the ami ' end