summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorAdam Jacob <adam@hjksolutions.com>2008-04-08 00:57:17 -0700
committerAdam Jacob <adam@hjksolutions.com>2008-04-08 00:57:17 -0700
commit95eb1375f0647accd1b1a1569a7d0e3acc4a61e4 (patch)
treea58d6fddde4d7818dc33511ff8275c7b9f69f1c6 /bin
parent434f25ba07b5c0c50baa1e15b14a945bba3c3c3b (diff)
downloadchef-95eb1375f0647accd1b1a1569a7d0e3acc4a61e4.tar.gz
Adding chef-solo command, config examples, Chef::Log class, Chef::Log::Formatter, Chef::Compile, and all the tests
Diffstat (limited to 'bin')
-rwxr-xr-xbin/chef-solo85
-rwxr-xr-xbin/marionette-dotgraph40
2 files changed, 85 insertions, 40 deletions
diff --git a/bin/chef-solo b/bin/chef-solo
new file mode 100755
index 0000000000..0d49414f5a
--- /dev/null
+++ b/bin/chef-solo
@@ -0,0 +1,85 @@
+#!/usr/bin/ruby
+#
+# ./chef-solo - Build a meal with chef, sans-server!
+#
+# Author:: Adam Jacob (<adam@hjksolutions.com>)
+# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
+# License:: GNU General Public License version 2 or later
+#
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+$: << File.join(File.dirname(__FILE__), "..", "lib")
+
+require 'optparse'
+require 'chef'
+require 'rubygems'
+require 'facter'
+require 'yaml'
+
+config = {
+ :config_file => "/etc/chef/config.rb",
+ :log_level => :info,
+ :noop => false
+}
+opts = OptionParser.new do |opts|
+ opts.banner = "Usage: #{$0} [-d DIR|-r FILE] (options)"
+ opts.on("-c CONFIG", "--config CONFIG", "The Chef Config file to use") do |c|
+ config[:config_file] = c
+ end
+ opts.on("-n", "--noop", "Print what you would do, but don't actually do it.") do
+ config[:noop] = true
+ end
+ opts.on_tail("-l LEVEL", "--loglevel LEVEL", "Set the log level (debug, info, warn, error, fatal)") do |l|
+ config[:log_level] = l.to_sym
+ end
+ opts.on_tail("-h", "--help", "Show this message") do
+ puts opts
+ exit
+ end
+end
+opts.parse!(ARGV)
+
+unless File.exists?(config[:config_file]) && File.readable?(config[:config_file])
+ puts "I cannot find or read the config file: #{config[:config_file]}"
+ puts opts
+ exit
+end
+
+# Load our config file
+Chef::Config.from_file(config[:config_file])
+
+# Find out our own hostname.
+node_name = Facter["fqdn"].value
+node_name ||= Facter["hostname"].value
+
+# Grab a Chef::Compile object
+compile = Chef::Compile.new()
+
+# Load our Node, and then add all the Facter facts as attributes
+compile.load_node(node_name)
+Facter.each do |field, value|
+ compile.node[field.to_sym] = value
+end
+
+puts compile.node.to_yaml
+
+compile.load_definitions
+puts compile.definitions.to_yaml
+
+compile.load_recipes
+puts compile.resource_collection.to_yaml
+
+puts compile.to_yaml
diff --git a/bin/marionette-dotgraph b/bin/marionette-dotgraph
deleted file mode 100755
index 75c33da274..0000000000
--- a/bin/marionette-dotgraph
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/ruby
-#
-# Author:: Adam Jacob (<adam@hjksolutions.com>)
-# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
-# License:: GNU General Public License version 2 or later
-#
-# This program and entire repository is free software; you can
-# redistribute it and/or modify it under the terms of the GNU
-# General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-require File.join(File.dirname(__FILE__), "..", "lib", "chef")
-require 'rgl/dot'
-
-mr = Chef::Recipe.new("test", "default", "node")
-raise ArgumentError, "#{ARGV[0]} is not a file!" unless File.exists?(ARGV[0])
-mr.instance_eval(IO.read(ARGV[0]), ARGV[0], 1)
-puts mr.inspect
-puts mr.dg.directed?
-puts mr.dg.acyclic?
-tree = Array.new
-mr.dg.depth_first_visit(:top) do |v|
- tree << v
-end
-maybe = mr.dg.bfs_search_tree_from(:top)
-puts maybe.acyclic?
-puts maybe.directed?
-puts maybe.topsort_iterator.to_a.join("\n")
-maybe.write_to_graphic_file
-