Skip to content

Instantly share code, notes, and snippets.

@clauswitt
Created December 17, 2013 08:47
Show Gist options
  • Save clauswitt/8001933 to your computer and use it in GitHub Desktop.
Save clauswitt/8001933 to your computer and use it in GitHub Desktop.
Various files for our chef server setup
# Configure the Rakefile's tasks.
###
# Company and SSL Details
# Used with the ssl_cert task.
###
# The company name - used for SSL certificates, and in srvious other places
COMPANY_NAME = "Example Com"
# The Country Name to use for SSL Certificates
SSL_COUNTRY_NAME = "US"
# The State Name to use for SSL Certificates
SSL_STATE_NAME = "Several"
# The Locality Name for SSL - typically, the city
SSL_LOCALITY_NAME = "Locality"
# What department?
SSL_ORGANIZATIONAL_UNIT_NAME = "Operations"
# The SSL contact email address
SSL_EMAIL_ADDRESS = "ops@example.com"
# License for new Cookbooks
# Can be :apachev2 or :none
NEW_COOKBOOK_LICENSE = :apachev2
###
# Useful Extras (which you probably don't need to change)
###
# The top of the repository checkout
TOPDIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
# Where to store certificates generated with ssl_cert
CADIR = File.expand_path(File.join(TOPDIR, "certificates"))
rake databag:upload_all
rake roles
rake upload_cookbooks
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'jenkins'
client_key "#{current_dir}/client.pem"
validation_client_name 'chef-validator'
validation_key "#{current_dir}/validation.pem"
chef_server_url 'http://serverurl:4000'
cache_type 'BasicFile'
cache_options( :path => '#{current_dir}/.chef/checksums' )
cookbook_path ["~/workspace/Chef-deploy/cookbooks"]
#
# Rakefile for Chef Server Repository
#
# Author:: Adam Jacob (<adam@opscode.com>)
# Copyright:: Copyright (c) 2008 Opscode, Inc.
# License:: Apache License, Version 2.0
#
# 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.
#
require 'rubygems'
require 'chef'
require 'json'
# Load constants from rake config file.
require File.join(File.dirname(__FILE__), 'config', 'rake')
# Detect the version control system and assign to $vcs. Used by the update
# task in chef_repo.rake (below). The install task calls update, so this
# is run whenever the repo is installed.
#
# Comment out these lines to skip the update.
if File.directory?(File.join(TOPDIR, ".svn"))
$vcs = :svn
elsif File.directory?(File.join(TOPDIR, ".git"))
$vcs = :git
end
# Load common, useful tasks from Chef.
# rake -T to see the tasks this loads.
load 'chef/tasks/chef_repo.rake'
desc "Bundle a single cookbook for distribution"
task :bundle_cookbook => [ :metadata ]
task :bundle_cookbook, :cookbook do |t, args|
tarball_name = "#{args.cookbook}.tar.gz"
temp_dir = File.join(Dir.tmpdir, "chef-upload-cookbooks")
temp_cookbook_dir = File.join(temp_dir, args.cookbook)
tarball_dir = File.join(TOPDIR, "pkgs")
FileUtils.mkdir_p(tarball_dir)
FileUtils.mkdir(temp_dir)
FileUtils.mkdir(temp_cookbook_dir)
child_folders = [ "cookbooks/#{args.cookbook}", "site-cookbooks/#{args.cookbook}" ]
child_folders.each do |folder|
file_path = File.join(TOPDIR, folder, ".")
FileUtils.cp_r(file_path, temp_cookbook_dir) if File.directory?(file_path)
end
system("tar", "-C", temp_dir, "-cvzf", File.join(tarball_dir, tarball_name), "./#{args.cookbook}")
FileUtils.rm_rf temp_dir
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment