-
-
Save PaulReiber/5845019 to your computer and use it in GitHub Desktop.
Small ruby/fog program to run a linux command via ssh on all of your cloud servers, displaying the returned output from each server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment