Skip to content

Instantly share code, notes, and snippets.

View apsoto's full-sized avatar

Alex Soto apsoto

  • San Francisco, CA
View GitHub Profile
@apsoto
apsoto / gist:329710
Created March 11, 2010 21:51 — forked from Aslan/gist:328766
Delete ec2 terminated nodes from the chef server
#!/usr/bin/ruby
instances = `ec2-describe-instances --show-empty-fields`
lines = instances.split(/\n/)
running_instances = []
lines.each do |lines|
if lines =~ /^INSTANCE/
fields = lines.split(/\t/)
if fields[5] == 'running'
running_instances << fields[1]
@apsoto
apsoto / crazy.rb
Created March 11, 2010 23:27
monkey patching chef
# file in your cookbook's library dir
module Crazy
def go_nuts
end
end
class Chef::Resource
include Crazy
end
@apsoto
apsoto / chef_client.rb
Created March 16, 2010 18:51
chef client.rb
require 'ohai'
require 'json'
CLIENT_CONFIG_JSON = "/etc/chef/client-config.json"
o = Ohai::System.new
o.all_plugins
begin
@apsoto
apsoto / rvm-your-chef.rb
Created July 7, 2010 23:46 — forked from adamhjk/rvm-your-chef.rb
Chef - Invoke rvm and inherit the environment updates
# Check this out, rvm use rbx
ruby_block "rvm use rbx" do
block do
Chef::Mixin::Command.popen4('bash -l -c "rvm use 1.9.1 && env"') do |p,i,o,e|
o.each_line do |line|
env_bits = line.split("=")
ENV[env_bits[0]] = env_bits[1]
end
end
@apsoto
apsoto / update_cache.rake
Created August 4, 2010 20:53 — forked from mdkent/update_cache.rake
Sync Chef Cookbooks and Roles with Server
#
# Tasks to keep your repository in sync with your Chef Server
#
# Author:: Matthew Kent (<mkent@magoazul.com>)
# Copyright:: Copyright (c) 2010 Matthew Kent
# 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
@apsoto
apsoto / compact chef couchdb
Created September 8, 2010 17:49
compact chef couchdb
curl -H "Content-Type: application/json" -X POST http://localhost:5984/chef/_compact
@apsoto
apsoto / aws_cf_invalidate.rb
Created October 28, 2010 18:05 — forked from objectoriented/aws_cf_invalidate.rb
simple script to invalidate a list of Amazon Cloudfront files
#! /usr/bin/env ruby
#
require 'rubygems'
require 'hmac-sha1' # on OS X: sudo gem install ruby-hmac
require 'net/https'
require 'base64'
#
# CHANGE ME: S3 access credentials go here, along with CloudFront Distribution ID
#
@apsoto
apsoto / chef check for checkins
Created November 8, 2010 22:50 — forked from paulchoi/chef check for checkins
Script that notifies what chef nodes have not 'checked in' within a certain time period
#!/usr/bin/ruby
# lists hosts whose chef-client hasn't checked in with the server for a while
# how many seconds before we alert
threshold = 3600
# requires that your user account is set up for Chef's "knife" utility
me = ENV["USER"]
@apsoto
apsoto / knife-config.staging.rb
Created November 22, 2010 19:21
Managing different chef environments using git branches
log_level :debug
log_location STDOUT
validation_client_name 'channels-staging-validator'
validation_key './.chef/channels-staging-validator.pem'
chef_server_url 'https://api.opscode.com/organizations/channels-staging'
cache_options( :path => './.chef/channels-staging-checksums' )
@apsoto
apsoto / opscode-backup.rb
Created December 2, 2010 06:26 — forked from adamhjk/opscode-backup.rb
Chef Attributes Backup: recipes are in VCS, but attributes aren't....
require 'chef'
require 'chef/node'
class Opscode
class Backup
attr_accessor :backup_dir
def initialize(backup_dir, config_file)
@backup_dir = backup_dir
Chef::Config.from_file(config_file)