Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@PaulReiber
Last active May 14, 2019 19:45
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PaulReiber/5845019 to your computer and use it in GitHub Desktop.
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
#!/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