class Gusteau::Chef
Public Class Methods
new(server, platform = nil)
click to toggle source
# File lib/gusteau/chef.rb, line 7 def initialize(server, platform = nil) @server = server @platform = platform || 'omnibus' end
Public Instance Methods
run(dna, opts)
click to toggle source
# File lib/gusteau/chef.rb, line 12 def run(dna, opts) dest_dir = Gusteau::Config.settings['chef_config_dir'] @server.run "rm -rf #{dest_dir} && mkdir #{dest_dir} && mkdir -p /tmp/chef" with_gusteau_dir(dna[:path]) do |dir| @server.upload [dir], dest_dir, :exclude => '.git/', :strip_c => 2 end @server.run "sh /etc/chef/bootstrap.sh #{Gusteau::Config.settings['chef_version']}" if opts['bootstrap'] cmd = "unset GEM_HOME; unset GEM_PATH; chef-solo -c #{dest_dir}/solo.rb -j #{dest_dir}/dna.json --color" cmd << " -F #{opts['format']}" if opts['format'] cmd << " -l #{opts['log_level']}" if opts['log_level'] cmd << " -W" if opts['why-run'] @server.run cmd end
Private Instance Methods
files_list(dna_path)
click to toggle source
# File lib/gusteau/chef.rb, line 31 def files_list(dna_path) bootstrap_dir = File.expand_path('../../../bootstrap', __FILE__) bootstrap = Gusteau::Config.settings['bootstrap'] || "#{bootstrap_dir}/#{@platform}.sh" { dna_path => "dna.json", bootstrap => "bootstrap.sh", "#{bootstrap_dir}/solo.rb.erb" => "solo.rb", 'data_bags' => "data_bags", Gusteau::Config.settings['roles_path'] => "roles" }.tap do |f| Gusteau::Config.settings['cookbooks_path'].each_with_index do |path, i| f[path] = "cookbooks-#{i}" end end end
with_gusteau_dir(dna_path) { |tmp_dir| ... }
click to toggle source
# File lib/gusteau/chef.rb, line 48 def with_gusteau_dir(dna_path) tmp_dir = "/tmp/gusteau-#{Time.now.to_i}" FileUtils.mkdir_p(tmp_dir) files_list(dna_path).each_pair do |src, dest| if File.exists?(src) if File.extname(src) == '.erb' File.open("#{tmp_dir}/#{dest}", "w" ) do |f| f.write read_erb(src) end else FileUtils.cp_r(src, "#{tmp_dir}/#{dest}") end end end yield tmp_dir FileUtils.rm_rf(tmp_dir) end