diff options
author | Adam Jacob <adam@hjksolutions.com> | 2008-04-08 00:57:17 -0700 |
---|---|---|
committer | Adam Jacob <adam@hjksolutions.com> | 2008-04-08 00:57:17 -0700 |
commit | 95eb1375f0647accd1b1a1569a7d0e3acc4a61e4 (patch) | |
tree | a58d6fddde4d7818dc33511ff8275c7b9f69f1c6 /bin | |
parent | 434f25ba07b5c0c50baa1e15b14a945bba3c3c3b (diff) | |
download | chef-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-x | bin/chef-solo | 85 | ||||
-rwxr-xr-x | bin/marionette-dotgraph | 40 |
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 - |