Permalink
Browse files

chef-337, bring Rakefile in line with updates upstream with metadata,…

… roles and rake.rb consistent with opscode/cookbook for chef.
  • Loading branch information...
1 parent 437bbf6 commit 3402852afee88056fbb9d39b0310c1cd2ac95b73 @jtimberman jtimberman committed Jun 4, 2009
Showing with 13 additions and 159 deletions.
  1. +7 −153 Rakefile
  2. +5 −5 config/rake.rb
  3. +1 −1 roles/README
View
160 Rakefile
@@ -18,164 +18,18 @@
# limitations under the License.
#
-require File.join(File.dirname(__FILE__), 'config', 'rake')
+require 'rubygems'
+require 'chef'
+require 'json'
-require 'tempfile'
+# Make sure you have loaded constants first
+require File.join(File.dirname(__FILE__), 'config', 'rake')
+# And choosen a VCS
if File.directory?(File.join(TOPDIR, ".svn"))
$vcs = :svn
elsif File.directory?(File.join(TOPDIR, ".git"))
$vcs = :git
end
-desc "Update your repository from source control"
-task :update do
- puts "** Updating your repository"
-
- case $vcs
- when :svn
- sh %{svn up}
- when :git
- pull = false
- pull = true if File.join(TOPDIR, ".git", "remotes", "origin")
- IO.foreach(File.join(TOPDIR, ".git", "config")) do |line|
- pull = true if line =~ /\[remote "origin"\]/
- end
- if pull
- sh %{git pull}
- else
- puts "* Skipping git pull, no origin specified"
- end
- else
- puts "* No SCM configured, skipping update"
- end
-end
-
-desc "Test your cookbooks for syntax errors"
-task :test do
- puts "** Testing your cookbooks for syntax errors"
-
- recipes = ["*cookbooks"].map { |folder|
- Dir[File.join(TOPDIR, folder, "**", "*.rb")]
- }.flatten
-
- recipes.each do |recipe|
- print "Testing recipe #{recipe}: "
- sh %{ruby -c #{recipe}} do |ok, res|
- if ! ok
- raise "Syntax error in #{recipe}"
- end
- end
- end
-end
-
-desc "Install the latest copy of the repository on this Chef Server"
-task :install => [ :update, :test ] do
- puts "** Installing your cookbooks"
- directories = [
- COOKBOOK_PATH,
- SITE_COOKBOOK_PATH,
- CHEF_CONFIG_PATH
- ]
- puts "* Creating Directories"
- directories.each do |dir|
- sh "sudo mkdir -p #{dir}"
- sh "sudo chown root #{dir}"
- end
- puts "* Installing new Cookbooks"
- sh "sudo rsync -rlP --delete --exclude '.svn' cookbooks/ #{COOKBOOK_PATH}"
- puts "* Installing new Site Cookbooks"
- sh "sudo rsync -rlP --delete --exclude '.svn' site-cookbooks/ #{SITE_COOKBOOK_PATH}"
- # puts "* Installing new Chef Server Config"
- # sh "sudo cp config/server.rb #{CHEF_SERVER_CONFIG}"
- # puts "* Installing new Chef Client Config"
- # sh "sudo cp config/client.rb #{CHEF_CLIENT_CONFIG}"
-end
-
-desc "By default, run rake test"
-task :default => [ :test ]
-
-desc "Create a new cookbook (with COOKBOOK=name, optional CB_PREFIX=site-)"
-task :new_cookbook do
- create_cookbook(File.join(TOPDIR, "#{ENV["CB_PREFIX"]}cookbooks"))
-end
-
-def create_cookbook(dir)
- raise "Must provide a COOKBOOK=" unless ENV["COOKBOOK"]
- puts "** Creating cookbook #{ENV["COOKBOOK"]}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "attributes")}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "recipes")}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "definitions")}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "libraries")}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "files", "default")}"
- sh "mkdir -p #{File.join(dir, ENV["COOKBOOK"], "templates", "default")}"
- unless File.exists?(File.join(dir, ENV["COOKBOOK"], "recipes", "default.rb"))
- open(File.join(dir, ENV["COOKBOOK"], "recipes", "default.rb"), "w") do |file|
- file.puts <<-EOH
-#
-# Cookbook Name:: #{ENV["COOKBOOK"]}
-# Recipe:: default
-#
-# Copyright #{Time.now.year}, #{COMPANY_NAME}
-#
-EOH
- case NEW_COOKBOOK_LICENSE
- when :apachev2
- file.puts <<-EOH
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-EOH
- when :none
- file.puts <<-EOH
-# All rights reserved - Do Not Redistribute
-#
-EOH
- end
- end
- end
-end
-
-desc "Create a new self-signed SSL certificate for FQDN=foo.example.com"
-task :ssl_cert do
- $expect_verbose = true
- fqdn = ENV["FQDN"]
- fqdn =~ /^(.+?)\.(.+)$/
- hostname = $1
- domain = $2
- raise "Must provide FQDN!" unless fqdn && hostname && domain
- puts "** Creating self signed SSL Certificate for #{fqdn}"
- sh("(cd #{CADIR} && openssl genrsa 2048 > #{fqdn}.key)")
- sh("(cd #{CADIR} && chmod 644 #{fqdn}.key)")
- puts "* Generating Self Signed Certificate Request"
- tf = Tempfile.new("#{fqdn}.ssl-conf")
- ssl_config = <<EOH
-[ req ]
-distinguished_name = req_distinguished_name
-prompt = no
-
-[ req_distinguished_name ]
-C = #{SSL_COUNTRY_NAME}
-ST = #{SSL_STATE_NAME}
-L = #{SSL_LOCALITY_NAME}
-O = #{COMPANY_NAME}
-OU = #{SSL_ORGANIZATIONAL_UNIT_NAME}
-CN = #{fqdn}
-emailAddress = #{SSL_EMAIL_ADDRESS}
-EOH
- tf.puts(ssl_config)
- tf.close
- sh("(cd #{CADIR} && openssl req -config '#{tf.path}' -new -x509 -nodes -sha1 -days 3650 -key #{fqdn}.key > #{fqdn}.crt)")
- sh("(cd #{CADIR} && openssl x509 -noout -fingerprint -text < #{fqdn}.crt > #{fqdn}.info)")
- sh("(cd #{CADIR} && cat #{fqdn}.crt #{fqdn}.key > #{fqdn}.pem)")
- sh("(cd #{CADIR} && chmod 644 #{fqdn}.pem)")
-end
+load 'chef/tasks/chef_repo.rake'
View
@@ -9,16 +9,16 @@
SSL_COUNTRY_NAME = "US"
# The State Name to use for SSL Certificates
-SSL_STATE_NAME = "Washington"
+SSL_STATE_NAME = "Several"
# The Locality Name for SSL - typically, the city
-SSL_LOCALITY_NAME = "Seattle"
+SSL_LOCALITY_NAME = "Locality"
# What department?
SSL_ORGANIZATIONAL_UNIT_NAME = "Operations"
# The SSL contact email address
-SSL_EMAIL_ADDRESS = "operations@example.com"
+SSL_EMAIL_ADDRESS = "ops@example.com"
# License for new Cookbooks
# Can be :apachev2 or :none
@@ -29,10 +29,10 @@
##########################
# Where to find upstream cookbooks
-COOKBOOK_PATH = "/var/chef/cookbooks"
+COOKBOOK_PATH = "/srv/chef/cookbooks"
# Where to find site-local modifications to upstream cookbooks
-SITE_COOKBOOK_PATH = "/var/chef/site-cookbooks"
+SITE_COOKBOOK_PATH = "/srv/chef/site-cookbooks"
# Chef Config Path
CHEF_CONFIG_PATH = "/etc/chef"
View
@@ -1 +1 @@
-Create roles here, in either .rb or .json files. Any roles created here win vs those created in the webui.
+Create roles here, in either .rb or .json files. Any roles created here win vs those created in the webui.

0 comments on commit 3402852

Please sign in to comment.