class Ronin::Chef

Public Class Methods

new() click to toggle source
# File lib/ronin/chef.rb, line 24
def initialize
  @run_list  = "#{Ronin::Config[:artifact_path]}/ronin.json"
  @solo_conf = "#{Ronin::Config[:artifact_path]}/ronin-chef-solo.rb"
  @recipes   = Ronin::RunList.new.artifacts
end

Public Instance Methods

clean_up() click to toggle source
# File lib/ronin/chef.rb, line 63
def clean_up
  Ronin::Log.info("Cleaning up Chef run list at #{@run_list}.")
  File.delete(@run_list)

  Ronin::Log.info("Cleaning up Chef-Solo config at #{@solo_conf}.")
  File.delete(@solo_conf)
end
create_run_list() click to toggle source
# File lib/ronin/chef.rb, line 30
def create_run_list
  Ronin::Log.info("Building Chef run list at #{@run_list}.")
  @rl = []
  @rl_obj = {}
  @recipes.each do |r|
    @rl << "recipe[#{r}]"
    Ronin::Log.info("Adding recipe '#{r}' to run list.")
  end

  @rl_obj['run_list'] = @rl

  File.open(@run_list, "w") do |f|
    f.write(@rl_obj.to_json)
  end
end
create_solo_conf() click to toggle source
# File lib/ronin/chef.rb, line 55
def create_solo_conf
  @solo_config = "file_cache_path '/var/tmp/ronin/chef-solo'\ncookbook_path '#{Ronin::Config[:artifact_path]}'\n"

  File.open(@solo_conf, "w") do |f|
    f.write(@solo_config)
  end
end
run() click to toggle source
# File lib/ronin/chef.rb, line 46
def run
  self.create_run_list
  self.create_solo_conf
  Ronin::Log.info("Running Chef, logging to #{Ronin::Config[:interpreter_log_path]}/ronin-chef.log.")
  @cmd = Mixlib::ShellOut.new("#{Ronin::Util.find_cmd("chef-solo")}  --logfile #{Ronin::Config[:log_path]}/ronin-chef.log --config #{@solo_conf} --json-attributes #{@run_list}")
  @cmd.run_command
  self.clean_up
end