Skip to content

Instantly share code, notes, and snippets.

View mdkent's full-sized avatar

Matthew Kent mdkent

  • Basecamp
  • Nanaimo, BC, Canada
View GitHub Profile
### definition
#
# Cookbook Name:: example
# Definition:: example_config_geocoders
#
define :example_config_geocoders, :geocoders_list => nil, :app_config_dir => nil do
app_config_dir = params[:app_config_dir]
geocoders_list = params[:geocoders_list]
### definition
#
# Cookbook Name:: example
# Definition:: example_config_geocoders
#
define :example_config_geocoders, :geocoders_list => nil, :app_config_dir => nil do
app_config_dir = params[:app_config_dir]
geocoders_list = params[:geocoders_list]
@mdkent
mdkent / snippet.rb
Created November 27, 2009 00:22 — forked from adamhjk/snippet.rb
# cookbook/ftp_stuff/definitions/ftp_user.rb
define :ftp_user, :password => nil do
begin
r = resources(:template => "/etc/ftp_passwd")
rescue
r = template "/etc/ftp_passwd" do
owner "root"
group "root"
mode "0600"
cookbook "ftppasswd.erb"
# ec2 ami-1515f67c
sudo sed -i 's/universe/multiverse universe/' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y ruby ruby1.8-dev libopenssl-ruby1.8 rdoc ri irb build-essential wget ssl-cert rubygems git-core rake librspec-ruby libxml-ruby thin couchdb zlib1g-dev libxml2-dev
sudo gem sources -a http://gems.opscode.com
sudo gem sources -a http://gemcutter.org # for nanite
sudo gem install cucumber merb-core nanite jeweler uuidtools json libxml-ruby --no-ri --no-rdoc
mkdir ~/src
cd ~/src
git clone git://github.com/opscode/chef.git
sname = "recipe[#{self.cookbook_name}" + (self.recipe_name == "default" ? "" : self.recipe_name) + "]"
if node.recipes[-1] != sname
node.recipes.remove sname
node.recipes << sname
end
collection.each do |r|
if r.class == Chef::Resource::Package
if r.action.to_s.include?("install") or r.action.to_s.include?("upgrade")
t = resources(:template => "/etc/pkgsync/musthave")
# Chef Client Config File
require 'ohai'
require 'json'
o = Ohai::System.new
o.all_plugins
chef_config = JSON.parse(o[:ec2][:userdata])
if chef_config.kind_of?(Array)
chef_config = chef_config[o[:ec2][:ami_launch_index]]
class Chef
class Resource
class ManagedTemplate < Template
def initialize(name, collection=nil, node=nil)
super(name, collection, node)
not_if { ::File.exists?(name.sub(/(.*)(\/)/, '\1/noclobber.')) }
end
end
end
end
module SmartD
require "open3"
# Go through the devices in node[:block_device].
def self.pop_smartd_hash()
changed = false
node[:block_device].each do |device, properties|
if not node[:quick_start][:smartd].has_key?(device)
collection.each do |r|
if r.class == Chef::Resource::Package
if r.action.to_s.include?("install") or r.action.to_s.include?("upgrade")
r.action :upgrade
elsif r.action.include?(:remove) or r.action.include?(:purge)
r.action :purge
end
end
end
# minimal defaults for the main postfix setup
# by defaul postfix will be a null client setup
# to forward to sysmail only.
set[:postfix][:conf][:alias_database] = "hash:/etc/mail/aliases"
set[:postfix][:conf][:alias_maps] = "hash:/etc/mail/aliases"
set[:postfix][:conf][:html_directory] = "no"
set[:postfix][:conf][:inet_interfaces] = "localhost"
set[:postfix][:conf][:mail_owner] = "postfix"
set[:postfix][:conf][:mydestination] = nil