Skip to content

Instantly share code, notes, and snippets.

@danielsdeleo
Created June 12, 2012 23:06
Show Gist options
  • Save danielsdeleo/2920702 to your computer and use it in GitHub Desktop.
Save danielsdeleo/2920702 to your computer and use it in GitHub Desktop.

Revisions

  1. danielsdeleo created this gist Jun 12, 2012.
    46 changes: 46 additions & 0 deletions gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    #!/usr/bin/env ruby

    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