aws-ssm-console 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
 - data/README.md +9 -0
 - data/aws-ssm-console.gemspec +1 -1
 - data/bin/aws-ssm-console +1 -11
 - data/lib/aws/ssm/console.rb +2 -4
 - data/lib/aws/ssm/console/cli.rb +22 -0
 - data/lib/aws/ssm/console/options.rb +42 -0
 - data/lib/aws/ssm/console/printer.rb +1 -1
 - data/lib/aws/ssm/console/runner.rb +10 -1
 - data/lib/aws/ssm/console/version.rb +3 -1
 - metadata +3 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d1b7150d2747265daac976d0d9e7eb9817ef9cd4
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 0bfe9b384a10b7238ecd397e30b723f8875b0d86
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 823b89833f82b17ca5674563540f9a27aee55cea005d2e0d267e8ceb312699b2731ccfe5f04b72842a1f584f0b1e781d55a9121441125aed52434393791e9538
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 03a99c3a5782b43e90c9549370ec98fb1ecb32a0fa7c0270216b66ce7579b801347f06c242282985b8054c5956d0d4835f898acb50e54cc87267ac443ad9570d
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -28,11 +28,20 @@ You should configure some environment variables to use AWS SDK. 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
            ### Run Command
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
      
 31 
     | 
    
         
            +
            #### Interactive mode
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       31 
33 
     | 
    
         
             
            ```
         
     | 
| 
       32 
34 
     | 
    
         
             
            $ bin/aws-ssm-console --instance-ids=i-xxxx,i-yyyy,...
         
     | 
| 
       33 
35 
     | 
    
         
             
            >> 
         
     | 
| 
       34 
36 
     | 
    
         
             
            ```
         
     | 
| 
       35 
37 
     | 
    
         | 
| 
      
 38 
     | 
    
         
            +
            #### Batch mode
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            ```
         
     | 
| 
      
 41 
     | 
    
         
            +
            $ bin/aws-ssm-console -c ls --instance-ids=i-xxxx,i-yyyy,...
         
     | 
| 
      
 42 
     | 
    
         
            +
            ...
         
     | 
| 
      
 43 
     | 
    
         
            +
            ```
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       36 
45 
     | 
    
         
             
            ## Development
         
     | 
| 
       37 
46 
     | 
    
         | 
| 
       38 
47 
     | 
    
         
             
            After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
         
     | 
    
        data/aws-ssm-console.gemspec
    CHANGED
    
    | 
         @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       6 
6 
     | 
    
         
             
              spec.name          = 'aws-ssm-console'
         
     | 
| 
       7 
     | 
    
         
            -
              spec.version       = '0. 
     | 
| 
      
 7 
     | 
    
         
            +
              spec.version       = '0.2.0'
         
     | 
| 
       8 
8 
     | 
    
         
             
              spec.authors       = ['koshigoe']
         
     | 
| 
       9 
9 
     | 
    
         
             
              spec.email         = ['koshigoeb@gmail.com']
         
     | 
| 
       10 
10 
     | 
    
         
             
              spec.license       = 'MIT'
         
     | 
    
        data/bin/aws-ssm-console
    CHANGED
    
    | 
         @@ -2,15 +2,5 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'bundler/setup'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'aws/ssm/console'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'optparse'
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            OptionParser.new do |opt|
         
     | 
| 
       9 
     | 
    
         
            -
              opt.on('--instance-ids id,id,...', Array) { |v| options[:instance_ids] = v }
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              opt.parse!(ARGV)
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            raise ArgumentError, '--instance-ids is required' unless options[:instance_ids]
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            Aws::SSM::Console.run(options[:instance_ids])
         
     | 
| 
      
 6 
     | 
    
         
            +
            Aws::SSM::Console::CLI.new(ARGV).run
         
     | 
    
        data/lib/aws/ssm/console.rb
    CHANGED
    
    | 
         @@ -1,5 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'aws-sdk'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'aws/ssm/console/version'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'aws/ssm/console/cli'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'aws/ssm/console/options'
         
     | 
| 
       3 
5 
     | 
    
         
             
            require 'aws/ssm/console/runner'
         
     | 
| 
       4 
6 
     | 
    
         
             
            require 'aws/ssm/console/command'
         
     | 
| 
       5 
7 
     | 
    
         
             
            require 'aws/ssm/console/printer'
         
     | 
| 
         @@ -10,10 +12,6 @@ module Aws 
     | 
|
| 
       10 
12 
     | 
    
         
             
                  def self.client
         
     | 
| 
       11 
13 
     | 
    
         
             
                    @client ||= Aws::SSM::Client.new
         
     | 
| 
       12 
14 
     | 
    
         
             
                  end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                  def self.run(instance_ids)
         
     | 
| 
       15 
     | 
    
         
            -
                    Aws::SSM::Console::Runner.new(instance_ids).run
         
     | 
| 
       16 
     | 
    
         
            -
                  end
         
     | 
| 
       17 
15 
     | 
    
         
             
                end
         
     | 
| 
       18 
16 
     | 
    
         
             
              end
         
     | 
| 
       19 
17 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Aws
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SSM
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Console
         
     | 
| 
      
 4 
     | 
    
         
            +
                  class CLI
         
     | 
| 
      
 5 
     | 
    
         
            +
                    attr_reader :options
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    def initialize(argv)
         
     | 
| 
      
 8 
     | 
    
         
            +
                      @options = Options.new(argv)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    def run
         
     | 
| 
      
 12 
     | 
    
         
            +
                      runner = Aws::SSM::Console::Runner.new(options.instance_ids)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      if options.command
         
     | 
| 
      
 14 
     | 
    
         
            +
                        runner.invoke(options.command)
         
     | 
| 
      
 15 
     | 
    
         
            +
                      else
         
     | 
| 
      
 16 
     | 
    
         
            +
                        runner.run
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'optparse'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Aws
         
     | 
| 
      
 4 
     | 
    
         
            +
              module SSM
         
     | 
| 
      
 5 
     | 
    
         
            +
                module Console
         
     | 
| 
      
 6 
     | 
    
         
            +
                  class Options
         
     | 
| 
      
 7 
     | 
    
         
            +
                    attr_reader :instance_ids,
         
     | 
| 
      
 8 
     | 
    
         
            +
                                :command
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                    def initialize(argv)
         
     | 
| 
      
 11 
     | 
    
         
            +
                      @instance_ids = []
         
     | 
| 
      
 12 
     | 
    
         
            +
                      @command = nil
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                      parser.parse!(argv)
         
     | 
| 
      
 15 
     | 
    
         
            +
                      validate!
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    private
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                    def parser
         
     | 
| 
      
 21 
     | 
    
         
            +
                      @parser = OptionParser.new do |opt|
         
     | 
| 
      
 22 
     | 
    
         
            +
                        opt.on('--instance-ids id,id,...', Array) { |v| @instance_ids += v }
         
     | 
| 
      
 23 
     | 
    
         
            +
                        opt.on('-c command', String) { |v| @command = v }
         
     | 
| 
      
 24 
     | 
    
         
            +
                        opt.on('--tag Name:Value', String) { |v| @instance_ids += collect_instance_ids_by_tag(v) }
         
     | 
| 
      
 25 
     | 
    
         
            +
                      end
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    def validate!
         
     | 
| 
      
 29 
     | 
    
         
            +
                      raise ArgumentError, 'EC2 instance IDs required.' if instance_ids.empty?
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    def collect_instance_ids_by_tag(tag)
         
     | 
| 
      
 33 
     | 
    
         
            +
                      name, value = tag.split(':', 2)
         
     | 
| 
      
 34 
     | 
    
         
            +
                      filters = [{ name: "tag:#{name}", values: [value] }]
         
     | 
| 
      
 35 
     | 
    
         
            +
                      Aws::EC2::Client.new.describe_instances(filters: filters).reservations.each_with_object([]) do |reservation, res|
         
     | 
| 
      
 36 
     | 
    
         
            +
                        reservation.instances.each { |instance| res << instance.instance_id }
         
     | 
| 
      
 37 
     | 
    
         
            +
                      end
         
     | 
| 
      
 38 
     | 
    
         
            +
                    end
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -37,7 +37,7 @@ module Aws 
     | 
|
| 
       37 
37 
     | 
    
         
             
                        response = Aws::SSM::Console.client.list_command_invocations(command_id: command_id, instance_id: instance_id, details: true)
         
     | 
| 
       38 
38 
     | 
    
         
             
                        response.command_invocations.each do |invocation|
         
     | 
| 
       39 
39 
     | 
    
         
             
                          invocation.command_plugins.map do |command_plugin|
         
     | 
| 
       40 
     | 
    
         
            -
                            yield(instance_id, command_plugin.status, command_plugin.output.split("\n").map { |x| "\t#{x}" }.join("\n"))
         
     | 
| 
      
 40 
     | 
    
         
            +
                            yield(instance_id, command_plugin.status, command_plugin.output.to_s.split("\n").map { |x| "\t#{x}" }.join("\n"))
         
     | 
| 
       41 
41 
     | 
    
         
             
                          end
         
     | 
| 
       42 
42 
     | 
    
         
             
                        end
         
     | 
| 
       43 
43 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -4,6 +4,10 @@ module Aws 
     | 
|
| 
       4 
4 
     | 
    
         
             
              module SSM
         
     | 
| 
       5 
5 
     | 
    
         
             
                module Console
         
     | 
| 
       6 
6 
     | 
    
         
             
                  class Runner
         
     | 
| 
      
 7 
     | 
    
         
            +
                    extend Forwardable
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                    delegate invoke: :@command
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       7 
11 
     | 
    
         
             
                    attr_reader :command
         
     | 
| 
       8 
12 
     | 
    
         | 
| 
       9 
13 
     | 
    
         
             
                    def initialize(instance_ids)
         
     | 
| 
         @@ -11,8 +15,13 @@ module Aws 
     | 
|
| 
       11 
15 
     | 
    
         
             
                    end
         
     | 
| 
       12 
16 
     | 
    
         | 
| 
       13 
17 
     | 
    
         
             
                    def run
         
     | 
| 
      
 18 
     | 
    
         
            +
                      stty_save = `stty -g`.chomp
         
     | 
| 
      
 19 
     | 
    
         
            +
                      trap('INT') { system 'stty', stty_save; exit }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       14 
21 
     | 
    
         
             
                      loop do
         
     | 
| 
       15 
     | 
    
         
            -
                         
     | 
| 
      
 22 
     | 
    
         
            +
                        cmd = Readline.readline('>> ', true)
         
     | 
| 
      
 23 
     | 
    
         
            +
                        break unless cmd
         
     | 
| 
      
 24 
     | 
    
         
            +
                        command.invoke(cmd)
         
     | 
| 
       16 
25 
     | 
    
         
             
                      end
         
     | 
| 
       17 
26 
     | 
    
         
             
                    end
         
     | 
| 
       18 
27 
     | 
    
         
             
                  end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: aws-ssm-console
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - koshigoe
         
     | 
| 
         @@ -85,7 +85,9 @@ files: 
     | 
|
| 
       85 
85 
     | 
    
         
             
            - bin/console
         
     | 
| 
       86 
86 
     | 
    
         
             
            - bin/setup
         
     | 
| 
       87 
87 
     | 
    
         
             
            - lib/aws/ssm/console.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/aws/ssm/console/cli.rb
         
     | 
| 
       88 
89 
     | 
    
         
             
            - lib/aws/ssm/console/command.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/aws/ssm/console/options.rb
         
     | 
| 
       89 
91 
     | 
    
         
             
            - lib/aws/ssm/console/printer.rb
         
     | 
| 
       90 
92 
     | 
    
         
             
            - lib/aws/ssm/console/runner.rb
         
     | 
| 
       91 
93 
     | 
    
         
             
            - lib/aws/ssm/console/version.rb
         
     |