Skip to content

Instantly share code, notes, and snippets.

@jtimberman
Created October 25, 2012 17:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtimberman/3954265 to your computer and use it in GitHub Desktop.
Save jtimberman/3954265 to your computer and use it in GitHub Desktop.
Create a recipe file, then run chef-apply.rb filename.rb, and watch Chef run :-D
# Via a gist by Dan DeLeo (danielsdeleo) that I couldn't find.
recipe_path = ARGV[0]
if recipe_path.nil?
STDERR.puts "usage: chef-apply RECIPE_FILE"
exit 1
end
recipe_path = File.expand_path(recipe_path)
if !File.exist?(recipe_path)
STDERR.puts "No file #{recipe_path}"
exit 1
end
require 'rubygems'
require 'chef/client'
require 'chef/providers'
require 'chef/resources'
Chef::Log.level = :info
class Chef::Client
attr_reader :events
end
# expedient.
Chef::Config[:solo] = true
client = Chef::Client.new
client.run_ohai
client.build_node
run_context = if client.events.nil?
Chef::RunContext.new(client.node, {})
else
Chef::RunContext.new(client.node, {}, client.events)
end
recipe = Chef::Recipe.new("(chef-apply cookbook)", "(chef-apply recipe)", run_context)
recipe.from_file(recipe_path)
runner = Chef::Runner.new(run_context)
runner.converge
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment