#!/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!