#!/usr/bin/ruby
#############################################
# Ruby / Fog Cloud Server Command Runner
#
# Author: Paul Reiber reiber@gmail.com
#
# Usage: run commandline-to-run-on-all-servers
#
# Assumptions:
# * You are using the Rackspace Cloud
# * Your cloud servers are in the dfw datacenter (if not, fix the rackspace_region)  
# * All servers on the cloud account have key-based root ssh access.
#   ...if they don't have ssh key-based access here are the steps:
#   http://www.rackspace.com/knowledge_center/article/secure-shell-ssh
#
# The 'oj' gem requirement is only there to eliminate the irritating warning about the default JSON parser 
#
require 'rubygems'
require 'fog'
require 'pp'
require 'oj'

# populate the following with your correct username, api_key, and region details
service = Fog::Compute.new({ :provider => 'Rackspace', :version => :v2,
:rackspace_region => :dfw, :rackspace_username => 'YOUR-CLOUD-USERNAME', :rackspace_api_key => 'YOUR-CLOUD-API-KEY' })

# running a command on all servers and reporting the results is as simple as the following:
service.servers.each {|n| puts n.name; pp n.ssh [ARGV] }

# thats all it takes!