rig 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +3 -0
 - data/conf/accounts/default.yml +14 -0
 - data/conf/config.yml +27 -0
 - data/conf/templates/multi.yml +16 -0
 - data/conf/templates/solo.yml +9 -0
 - data/lib/rig/cloud.rb +0 -1
 - data/lib/rig/cloud/connection.rb +3 -18
 - data/lib/rig/cloud/instance.rb +8 -0
 - data/lib/rig/command.rb +1 -1
 - data/lib/rig/command/abstract.rb +13 -11
 - data/lib/rig/command/main.rb +47 -32
 - data/lib/rig/command/ssh.rb +27 -0
 - data/lib/rig/config.rb +45 -7
 - data/lib/rig/version.rb +1 -1
 - data/rig.gemspec +1 -1
 - metadata +10 -6
 - data/lib/rig/command/instance/ssh.rb +0 -32
 
    
        data/Gemfile
    CHANGED
    
    
    
        data/conf/config.yml
    ADDED
    
    | 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            rig:
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # if you're using chef, set this to the knife.rb configuration file
         
     | 
| 
      
 5 
     | 
    
         
            +
              # this will allow Rig to manage the chef nodes, environments and such.
         
     | 
| 
      
 6 
     | 
    
         
            +
              #
         
     | 
| 
      
 7 
     | 
    
         
            +
              #chef:
         
     | 
| 
      
 8 
     | 
    
         
            +
              #   knife: /path/to/chef/knife.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
              #
         
     | 
| 
      
 10 
     | 
    
         
            +
              # TODO: Figure out the same thing for puppet
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              ssh:
         
     | 
| 
      
 13 
     | 
    
         
            +
                # user to connect as, when ssh to server
         
     | 
| 
      
 14 
     | 
    
         
            +
                user: root
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              # the account to use if one is not specified
         
     | 
| 
      
 17 
     | 
    
         
            +
              default_account: default
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              # uncomment this and specify the accounts you want to support
         
     | 
| 
      
 20 
     | 
    
         
            +
              # all others will be filtered from use.
         
     | 
| 
      
 21 
     | 
    
         
            +
              #accounts:
         
     | 
| 
      
 22 
     | 
    
         
            +
              #  - default
         
     | 
| 
      
 23 
     | 
    
         
            +
              #  - production
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            #  flavor_id: ami-8baa73e2 # ubuntu 11.10, non-ebs storage
         
     | 
| 
      
 27 
     | 
    
         
            +
            #  key_name:  keyname
         
     | 
    
        data/lib/rig/cloud.rb
    CHANGED
    
    
    
        data/lib/rig/cloud/connection.rb
    CHANGED
    
    | 
         @@ -6,33 +6,18 @@ module Rig 
     | 
|
| 
       6 
6 
     | 
    
         
             
                class << self
         
     | 
| 
       7 
7 
     | 
    
         
             
                  def compute
         
     | 
| 
       8 
8 
     | 
    
         
             
                    @compute ||= begin
         
     | 
| 
       9 
     | 
    
         
            -
                      Fog::Compute.new(
         
     | 
| 
       10 
     | 
    
         
            -
                          :provider => Rig.config.provider,
         
     | 
| 
       11 
     | 
    
         
            -
                          :aws_access_key_id => Rig.config.key,
         
     | 
| 
       12 
     | 
    
         
            -
                          :aws_secret_access_key => Rig.config.secret,
         
     | 
| 
       13 
     | 
    
         
            -
                          :region => Rig.config.region
         
     | 
| 
       14 
     | 
    
         
            -
                      )
         
     | 
| 
      
 9 
     | 
    
         
            +
                      Fog::Compute.new(Rig.account.compute.to_hash)
         
     | 
| 
       15 
10 
     | 
    
         
             
                    end
         
     | 
| 
       16 
11 
     | 
    
         
             
                  end
         
     | 
| 
       17 
12 
     | 
    
         
             
                  def balancer
         
     | 
| 
       18 
13 
     | 
    
         
             
                    @balancer ||= begin
         
     | 
| 
       19 
14 
     | 
    
         
             
                      #Fog::Compute.new(
         
     | 
| 
       20 
     | 
    
         
            -
                      Fog::AWS::ELB.new(
         
     | 
| 
       21 
     | 
    
         
            -
                          #:provider => Rig.config.provider,
         
     | 
| 
       22 
     | 
    
         
            -
                          :aws_access_key_id => Rig.config.key,
         
     | 
| 
       23 
     | 
    
         
            -
                          :aws_secret_access_key => Rig.config.secret,
         
     | 
| 
       24 
     | 
    
         
            -
                          :region => Rig.config.region
         
     | 
| 
       25 
     | 
    
         
            -
                      )
         
     | 
| 
      
 15 
     | 
    
         
            +
                      Fog::AWS::ELB.new(Rig.account.balancer.to_hash)
         
     | 
| 
       26 
16 
     | 
    
         
             
                    end
         
     | 
| 
       27 
17 
     | 
    
         
             
                  end
         
     | 
| 
       28 
18 
     | 
    
         
             
                  def dns
         
     | 
| 
       29 
19 
     | 
    
         
             
                    @dns ||= begin
         
     | 
| 
       30 
     | 
    
         
            -
                      Fog::DNS.new(
         
     | 
| 
       31 
     | 
    
         
            -
                          :provider => Rig.config.provider,
         
     | 
| 
       32 
     | 
    
         
            -
                          :aws_access_key_id => Rig.config.key,
         
     | 
| 
       33 
     | 
    
         
            -
                          :aws_secret_access_key => Rig.config.secret
         
     | 
| 
       34 
     | 
    
         
            -
                          #:region => Rig.config.region
         
     | 
| 
       35 
     | 
    
         
            -
                      )
         
     | 
| 
      
 20 
     | 
    
         
            +
                      Fog::DNS.new(Rig.account.dns.to_hash)
         
     | 
| 
       36 
21 
     | 
    
         
             
                    end
         
     | 
| 
       37 
22 
     | 
    
         
             
                  end
         
     | 
| 
       38 
23 
     | 
    
         
             
                end
         
     | 
    
        data/lib/rig/cloud/instance.rb
    CHANGED
    
    | 
         @@ -24,6 +24,14 @@ module Rig 
     | 
|
| 
       24 
24 
     | 
    
         
             
                    def find_by_environment(env)
         
     | 
| 
       25 
25 
     | 
    
         
             
                      Rig::Cloud.compute.servers.all({"tag:Environment"=>env})
         
     | 
| 
       26 
26 
     | 
    
         
             
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
                    def find_by_role_and_environment(role, env)
         
     | 
| 
      
 28 
     | 
    
         
            +
                      Rig::Cloud.compute.servers.all({"tag:Environment"=> env, "tag:Role" => role})
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                    def find_by_nick(name)
         
     | 
| 
      
 32 
     | 
    
         
            +
                      (role, num, env) = name.match(/(\w+)(\d+)\.(\w+)/)[1..3]
         
     | 
| 
      
 33 
     | 
    
         
            +
                      find_by_role_and_environment(role, env).select {|s| s.tags['Name'] =~ /^#{role}#{num}/ }
         
     | 
| 
      
 34 
     | 
    
         
            +
                    end
         
     | 
| 
       27 
35 
     | 
    
         | 
| 
       28 
36 
     | 
    
         
             
                    def create(opts, tags={})
         
     | 
| 
       29 
37 
     | 
    
         
             
                      fog = Rig::Cloud.compute
         
     | 
    
        data/lib/rig/command.rb
    CHANGED
    
    | 
         @@ -9,6 +9,7 @@ require 'rig/command/abstract' 
     | 
|
| 
       9 
9 
     | 
    
         
             
            require 'rig/command/options'
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
            require 'rig/command/main'
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'rig/command/ssh'
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
            require 'rig/command/environment/main'
         
     | 
| 
       14 
15 
     | 
    
         
             
            require 'rig/command/environment/list'
         
     | 
| 
         @@ -27,7 +28,6 @@ require 'rig/command/dns/edit' 
     | 
|
| 
       27 
28 
     | 
    
         
             
            require 'rig/command/dns/destroy'
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
            require 'rig/command/instance/main'
         
     | 
| 
       30 
     | 
    
         
            -
            require 'rig/command/instance/ssh'
         
     | 
| 
       31 
31 
     | 
    
         
             
            require 'rig/command/instance/list'
         
     | 
| 
       32 
32 
     | 
    
         
             
            require 'rig/command/instance/create'
         
     | 
| 
       33 
33 
     | 
    
         
             
            require 'rig/command/instance/destroy'
         
     | 
    
        data/lib/rig/command/abstract.rb
    CHANGED
    
    | 
         @@ -3,9 +3,10 @@ require 'terminal-table/import' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module Rig
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Command
         
     | 
| 
       5 
5 
     | 
    
         
             
                class Abstract < Clamp::Command
         
     | 
| 
       6 
     | 
    
         
            -
                  option ["-n","--test"], :flag, "use Fog.mock! to test command without creating / destroying cloud resources" do |o|
         
     | 
| 
      
 6 
     | 
    
         
            +
                  option ["-n", "--test"], :flag, "use Fog.mock! to test command without creating / destroying cloud resources" do |o|
         
     | 
| 
       7 
7 
     | 
    
         
             
                    Fog.mock!
         
     | 
| 
       8 
8 
     | 
    
         
             
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                  option ["-a", "--account"], "ACCOUNT", "set the rig account to use", :default => "default"
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                  def print_table(columns, rows)
         
     | 
| 
       11 
12 
     | 
    
         
             
                    puts table(columns, *rows)
         
     | 
| 
         @@ -14,18 +15,19 @@ module Rig 
     | 
|
| 
       14 
15 
     | 
    
         
             
                  def instance_list(list)
         
     | 
| 
       15 
16 
     | 
    
         
             
                    rows = []
         
     | 
| 
       16 
17 
     | 
    
         
             
                    list.each do |server|
         
     | 
| 
       17 
     | 
    
         
            -
                       
     | 
| 
       18 
     | 
    
         
            -
                       
     | 
| 
       19 
     | 
    
         
            -
                       
     | 
| 
       20 
     | 
    
         
            -
                       
     | 
| 
       21 
     | 
    
         
            -
                       
     | 
| 
       22 
     | 
    
         
            -
                       
     | 
| 
       23 
     | 
    
         
            -
                       
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                       
     | 
| 
      
 18 
     | 
    
         
            +
                      r = []
         
     | 
| 
      
 19 
     | 
    
         
            +
                      r << server.tags['Name']
         
     | 
| 
      
 20 
     | 
    
         
            +
                      r << server.tags['Environment']
         
     | 
| 
      
 21 
     | 
    
         
            +
                      r << server.tags['Role']
         
     | 
| 
      
 22 
     | 
    
         
            +
                      r << server.public_ip_address.to_s
         
     | 
| 
      
 23 
     | 
    
         
            +
                      r << server.private_ip_address.to_s
         
     | 
| 
      
 24 
     | 
    
         
            +
                      r << server.flavor_id.to_s
         
     | 
| 
      
 25 
     | 
    
         
            +
                      r << server.id.to_s
         
     | 
| 
      
 26 
     | 
    
         
            +
                      r << server.state.to_s.downcase
         
     | 
| 
      
 27 
     | 
    
         
            +
                      rows << r
         
     | 
| 
       26 
28 
     | 
    
         
             
                    end
         
     | 
| 
       27 
29 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                    print_table(%w{Name Environment Role PublicIP Size InstanceID State}, rows)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    print_table(%w{Name Environment Role PublicIP PrivateIP Size InstanceID State}, rows)
         
     | 
| 
       29 
31 
     | 
    
         
             
                  end
         
     | 
| 
       30 
32 
     | 
    
         | 
| 
       31 
33 
     | 
    
         
             
                  def execute
         
     | 
    
        data/lib/rig/command/main.rb
    CHANGED
    
    | 
         @@ -1,3 +1,4 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'awesome_print'
         
     | 
| 
       1 
2 
     | 
    
         | 
| 
       2 
3 
     | 
    
         
             
            module Rig
         
     | 
| 
       3 
4 
     | 
    
         
             
              module Command
         
     | 
| 
         @@ -8,40 +9,54 @@ module Rig 
     | 
|
| 
       8 
9 
     | 
    
         
             
                    exit(0)
         
     | 
| 
       9 
10 
     | 
    
         
             
                  end
         
     | 
| 
       10 
11 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
       12 
     | 
    
         
            -
                     
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                       
     | 
| 
      
 12 
     | 
    
         
            +
                  subcommand "accounts", "show account list" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                    def execute
         
     | 
| 
      
 14 
     | 
    
         
            +
                      list = Rig.account_list
         
     | 
| 
      
 15 
     | 
    
         
            +
                      list.each do |n, f|
         
     | 
| 
      
 16 
     | 
    
         
            +
                        puts " #{n} => #{f}"
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
       17 
18 
     | 
    
         
             
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                     
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                  subcommand "init", "initialize configuration directory" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                    option %w{-f --force}, :flag, "force creation of files", :default => false
         
     | 
| 
      
 23 
     | 
    
         
            +
                    option %w{-d --directory}, "DIRECTORY", "configuration directory", :default => "~/.rig"
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    def execute
         
     | 
| 
      
 26 
     | 
    
         
            +
                      dir = File.expand_path(ENV['RIG_CONFIG'] ? ENV['RIG_CONFIG'] : directory)
         
     | 
| 
      
 27 
     | 
    
         
            +
                      back = "#{dir}.bak.#{Time.now.to_i}"
         
     | 
| 
      
 28 
     | 
    
         
            +
                      conf = File.expand_path("../../../../conf", __FILE__)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      files = ["config.yml", "accounts/default.yml", "templates/solo.yml", "templates/multi.yml"]
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                      unless dir
         
     | 
| 
      
 33 
     | 
    
         
            +
                        puts "directory could not be found: tried environment variables RIG_CONFIG (#{ENV['RIG_CONFIG']}) and HOME (#{ENV['HOME']}"
         
     | 
| 
      
 34 
     | 
    
         
            +
                        exit(1)
         
     | 
| 
      
 35 
     | 
    
         
            +
                      end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                      if File.exists?(dir)
         
     | 
| 
      
 38 
     | 
    
         
            +
                        unless File.directory?(dir)
         
     | 
| 
      
 39 
     | 
    
         
            +
                          puts "moving old config #{dir} to #{back}"
         
     | 
| 
      
 40 
     | 
    
         
            +
                          FileUtils.mv(dir, new)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        end
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                      puts "[create] #{dir}/"
         
     | 
| 
      
 45 
     | 
    
         
            +
                      FileUtils.mkdir_p(dir)
         
     | 
| 
      
 46 
     | 
    
         
            +
                      FileUtils.mkdir_p("#{dir}/accounts")
         
     | 
| 
      
 47 
     | 
    
         
            +
                      FileUtils.mkdir_p("#{dir}/templates")
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                      files.each do |file|
         
     | 
| 
      
 50 
     | 
    
         
            +
                        src  = "#{conf}/#{file}"
         
     | 
| 
      
 51 
     | 
    
         
            +
                        dest = "#{dir}/#{file}"
         
     | 
| 
      
 52 
     | 
    
         
            +
                        if File.exists?(dest) && !force?
         
     | 
| 
      
 53 
     | 
    
         
            +
                          puts "[skip] #{dest}"
         
     | 
| 
      
 54 
     | 
    
         
            +
                        else
         
     | 
| 
      
 55 
     | 
    
         
            +
                          puts "[create] #{dest}"
         
     | 
| 
      
 56 
     | 
    
         
            +
                          FileUtils.copy(src, dest)
         
     | 
| 
      
 57 
     | 
    
         
            +
                        end
         
     | 
| 
      
 58 
     | 
    
         
            +
                      end
         
     | 
| 
      
 59 
     | 
    
         
            +
                    end
         
     | 
| 
       45 
60 
     | 
    
         
             
                  end
         
     | 
| 
       46 
61 
     | 
    
         
             
                end
         
     | 
| 
       47 
62 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Rig
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Command
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Ssh < Abstract
         
     | 
| 
      
 4 
     | 
    
         
            +
                  parameter "NAME", "name of the host. <role><#>.<env>, eg: solo1.stable for the first solo role in environment stable"
         
     | 
| 
      
 5 
     | 
    
         
            +
                  def execute
         
     | 
| 
      
 6 
     | 
    
         
            +
                    user = Rig.config.ssh.user rescue nil
         
     | 
| 
      
 7 
     | 
    
         
            +
                    unless user
         
     | 
| 
      
 8 
     | 
    
         
            +
                      puts "must set rig:ssh:user in configuration."
         
     | 
| 
      
 9 
     | 
    
         
            +
                      exit(1)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    list = Rig::Cloud::Instance.find_by_nick(name)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    if list.count == 0
         
     | 
| 
      
 14 
     | 
    
         
            +
                      puts "server not found."
         
     | 
| 
      
 15 
     | 
    
         
            +
                    elsif list.count > 1
         
     | 
| 
      
 16 
     | 
    
         
            +
                      puts "query returned more than one server:"
         
     | 
| 
      
 17 
     | 
    
         
            +
                      instance_list(list)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    else
         
     | 
| 
      
 19 
     | 
    
         
            +
                      server = list.first
         
     | 
| 
      
 20 
     | 
    
         
            +
                      puts "connecting as #{user} to: #{server.tags['Name']} (#{server.public_ip_address})"
         
     | 
| 
      
 21 
     | 
    
         
            +
                      exec("ssh #{user}@#{server.public_ip_address}")
         
     | 
| 
      
 22 
     | 
    
         
            +
                    end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
            Rig::Command::Main.subcommand 'ssh', 'ssh to server', Rig::Command::Ssh
         
     | 
    
        data/lib/rig/config.rb
    CHANGED
    
    | 
         @@ -1,19 +1,57 @@ 
     | 
|
| 
       1 
1 
     | 
    
         | 
| 
       2 
2 
     | 
    
         
             
            module Rig
         
     | 
| 
       3 
3 
     | 
    
         
             
              class << self
         
     | 
| 
      
 4 
     | 
    
         
            +
                def configdir
         
     | 
| 
      
 5 
     | 
    
         
            +
                  @configdir ||= File.expand_path(ENV["RIG_CONFIG"] || "~/.rig")
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       4 
8 
     | 
    
         
             
                def config
         
     | 
| 
       5 
9 
     | 
    
         
             
                  @configuration ||= begin
         
     | 
| 
       6 
     | 
    
         
            -
                     
     | 
| 
       7 
     | 
    
         
            -
                     
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                     
     | 
| 
       10 
     | 
    
         
            -
                     
     | 
| 
       11 
     | 
    
         
            -
                    Rig::Oconfig.new(yaml['rig'])
         
     | 
| 
      
 10 
     | 
    
         
            +
                    c = Rig::Oconfig.load_yaml_file("#{configdir}/config.yml")
         
     | 
| 
      
 11 
     | 
    
         
            +
                    if c.chef
         
     | 
| 
      
 12 
     | 
    
         
            +
                      require 'rig/chef'
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    c
         
     | 
| 
       12 
15 
     | 
    
         
             
                  end
         
     | 
| 
       13 
16 
     | 
    
         
             
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                def account_list
         
     | 
| 
      
 19 
     | 
    
         
            +
                  @account_list ||= begin
         
     | 
| 
      
 20 
     | 
    
         
            +
                    accountdir = "#{configdir}/accounts"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    Dir["#{accountdir}/*"].inject({}) do |h, e|
         
     | 
| 
      
 22 
     | 
    
         
            +
                      f = e.gsub("#{accountdir}/", "")
         
     | 
| 
      
 23 
     | 
    
         
            +
                      f = File.basename(f, ".yml")
         
     | 
| 
      
 24 
     | 
    
         
            +
                      h[f.to_sym] = e
         
     | 
| 
      
 25 
     | 
    
         
            +
                      h
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def account
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @account ||= begin
         
     | 
| 
      
 32 
     | 
    
         
            +
                    Oconfig.load_yaml_file("#{configdir}/accounts/#{get_account}.yml")
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def get_account
         
     | 
| 
      
 37 
     | 
    
         
            +
                  return ENV['RIG_ACCOUNT'] if ENV['RIG_ACCOUNT']
         
     | 
| 
      
 38 
     | 
    
         
            +
                  return Rig.config.default_account if Rig.config.default_account
         
     | 
| 
      
 39 
     | 
    
         
            +
                  return Rig.config.accounts.first if Rig.config.accounts.count > 0
         
     | 
| 
      
 40 
     | 
    
         
            +
                  "default"
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
       14 
42 
     | 
    
         
             
              end
         
     | 
| 
       15 
43 
     | 
    
         | 
| 
       16 
44 
     | 
    
         
             
              class Oconfig
         
     | 
| 
      
 45 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 46 
     | 
    
         
            +
                  def load_yaml_file(path)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    file = File.expand_path(path)
         
     | 
| 
      
 48 
     | 
    
         
            +
                    raise "Configuration not found: #{path} (#{file})" unless File.exists?(file)
         
     | 
| 
      
 49 
     | 
    
         
            +
                    yaml = YAML.load_file(file)
         
     | 
| 
      
 50 
     | 
    
         
            +
                    yaml = yaml[yaml.keys.first] if yaml.keys.count == 1
         
     | 
| 
      
 51 
     | 
    
         
            +
                    Rig::Oconfig.new(yaml)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
       17 
55 
     | 
    
         
             
                def initialize(data={})
         
     | 
| 
       18 
56 
     | 
    
         
             
                  @data = {}
         
     | 
| 
       19 
57 
     | 
    
         
             
                  update!(data)
         
     | 
| 
         @@ -53,7 +91,7 @@ module Rig 
     | 
|
| 
       53 
91 
     | 
    
         
             
                def to_hash
         
     | 
| 
       54 
92 
     | 
    
         
             
                  out = {}
         
     | 
| 
       55 
93 
     | 
    
         
             
                  @data.each do |k, v|
         
     | 
| 
       56 
     | 
    
         
            -
                    out[k 
     | 
| 
      
 94 
     | 
    
         
            +
                    out[k] = v.kind_of?(Oconfig) ? v.to_hash : v
         
     | 
| 
       57 
95 
     | 
    
         
             
                  end
         
     | 
| 
       58 
96 
     | 
    
         
             
                  out
         
     | 
| 
       59 
97 
     | 
    
         
             
                end
         
     | 
    
        data/lib/rig/version.rb
    CHANGED
    
    
    
        data/rig.gemspec
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ require File.expand_path('../lib/rig/version', __FILE__) 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            Gem::Specification.new do |gem|
         
     | 
| 
       5 
5 
     | 
    
         
             
              gem.authors       = ["Shawn Catanzarite"]
         
     | 
| 
       6 
     | 
    
         
            -
              gem.email         = [" 
     | 
| 
      
 6 
     | 
    
         
            +
              gem.email         = ["scatanzarite@gmail.com"]
         
     | 
| 
       7 
7 
     | 
    
         
             
              gem.description   = %q{Cloud provisioning tool built on ruby fog}
         
     | 
| 
       8 
8 
     | 
    
         
             
              gem.summary       = %q{Cloud provisioning tool built on ruby fog}
         
     | 
| 
       9 
9 
     | 
    
         
             
              gem.homepage      = "https://github.com/shawncatz/rig"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: rig
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 23
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 3
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 0.3. 
     | 
| 
      
 9 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.3.2
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Shawn Catanzarite
         
     | 
| 
         @@ -15,7 +15,7 @@ autorequire: 
     | 
|
| 
       15 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date: 2012-04- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2012-04-25 00:00:00 Z
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       21 
21 
     | 
    
         
             
              name: clamp
         
     | 
| 
         @@ -103,7 +103,7 @@ dependencies: 
     | 
|
| 
       103 
103 
     | 
    
         
             
              version_requirements: *id006
         
     | 
| 
       104 
104 
     | 
    
         
             
            description: Cloud provisioning tool built on ruby fog
         
     | 
| 
       105 
105 
     | 
    
         
             
            email: 
         
     | 
| 
       106 
     | 
    
         
            -
            -  
     | 
| 
      
 106 
     | 
    
         
            +
            - scatanzarite@gmail.com
         
     | 
| 
       107 
107 
     | 
    
         
             
            executables: 
         
     | 
| 
       108 
108 
     | 
    
         
             
            - rig
         
     | 
| 
       109 
109 
     | 
    
         
             
            extensions: []
         
     | 
| 
         @@ -117,6 +117,10 @@ files: 
     | 
|
| 
       117 
117 
     | 
    
         
             
            - README.md
         
     | 
| 
       118 
118 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       119 
119 
     | 
    
         
             
            - bin/rig
         
     | 
| 
      
 120 
     | 
    
         
            +
            - conf/accounts/default.yml
         
     | 
| 
      
 121 
     | 
    
         
            +
            - conf/config.yml
         
     | 
| 
      
 122 
     | 
    
         
            +
            - conf/templates/multi.yml
         
     | 
| 
      
 123 
     | 
    
         
            +
            - conf/templates/solo.yml
         
     | 
| 
       120 
124 
     | 
    
         
             
            - lib/rig.rb
         
     | 
| 
       121 
125 
     | 
    
         
             
            - lib/rig/capistrano.rb
         
     | 
| 
       122 
126 
     | 
    
         
             
            - lib/rig/chef.rb
         
     | 
| 
         @@ -146,7 +150,6 @@ files: 
     | 
|
| 
       146 
150 
     | 
    
         
             
            - lib/rig/command/instance/destroy.rb
         
     | 
| 
       147 
151 
     | 
    
         
             
            - lib/rig/command/instance/list.rb
         
     | 
| 
       148 
152 
     | 
    
         
             
            - lib/rig/command/instance/main.rb
         
     | 
| 
       149 
     | 
    
         
            -
            - lib/rig/command/instance/ssh.rb
         
     | 
| 
       150 
153 
     | 
    
         
             
            - lib/rig/command/instance/tag/get.rb
         
     | 
| 
       151 
154 
     | 
    
         
             
            - lib/rig/command/instance/tag/main.rb
         
     | 
| 
       152 
155 
     | 
    
         
             
            - lib/rig/command/instance/tag/remove.rb
         
     | 
| 
         @@ -156,6 +159,7 @@ files: 
     | 
|
| 
       156 
159 
     | 
    
         
             
            - lib/rig/command/keypair/main.rb
         
     | 
| 
       157 
160 
     | 
    
         
             
            - lib/rig/command/main.rb
         
     | 
| 
       158 
161 
     | 
    
         
             
            - lib/rig/command/options.rb
         
     | 
| 
      
 162 
     | 
    
         
            +
            - lib/rig/command/ssh.rb
         
     | 
| 
       159 
163 
     | 
    
         
             
            - lib/rig/config.rb
         
     | 
| 
       160 
164 
     | 
    
         
             
            - lib/rig/version.rb
         
     | 
| 
       161 
165 
     | 
    
         
             
            - rig.gemspec
         
     | 
| 
         @@ -1,32 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rig'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module Rig
         
     | 
| 
       4 
     | 
    
         
            -
              module Command
         
     | 
| 
       5 
     | 
    
         
            -
                module Instance
         
     | 
| 
       6 
     | 
    
         
            -
                class Ssh < Abstract
         
     | 
| 
       7 
     | 
    
         
            -
                  include Options::Config
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  parameter "NAME", "the name of the instance to connect to"
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  def execute
         
     | 
| 
       12 
     | 
    
         
            -
                    connection = Rig::Cloud.compute
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                    filters = {}
         
     | 
| 
       15 
     | 
    
         
            -
                    filters["tag:Name"] = name if name
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    list = connection.servers.all(filters)
         
     | 
| 
       18 
     | 
    
         
            -
                    if list.count > 1
         
     | 
| 
       19 
     | 
    
         
            -
                      puts "there is more than one instance that matches:"
         
     | 
| 
       20 
     | 
    
         
            -
                      instance_list(list)
         
     | 
| 
       21 
     | 
    
         
            -
                      return
         
     | 
| 
       22 
     | 
    
         
            -
                    end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                    server = list.first
         
     | 
| 
       25 
     | 
    
         
            -
                    puts "ssh root@#{server.public_ip_address}"
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
              end
         
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            Rig::Command::Instance::Main.subcommand 'ssh', 'Connect to instance', Rig::Command::Instance::Ssh
         
     |