awsquery 0.1.0 → 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.
- data/README.md +8 -9
- data/bin/awsquery +18 -9
- data/bin/{awsssh → mssh} +17 -14
- metadata +16 -5
data/README.md
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
awsquery
|
1
|
+
awsquery -- query aws metadata for hosts
|
2
2
|
==========================================
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Allows the lookup and querying of EC2 hosts via the associated metadata.
|
4
|
+
A collection of tools for enumerating and manipulating AWS instances based on the tags and metadata.
|
7
5
|
|
8
6
|
## EXAMPLES
|
9
7
|
|
10
8
|
1. Look up hosts based on tags
|
11
9
|
|
12
|
-
|
10
|
+
```bash
|
11
|
+
$ awsquery Name=app1
|
12
|
+
```
|
13
13
|
|
14
14
|
2. Open iTerm with tabs for all appservers
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
```bash
|
17
|
+
$ awsquery Role=app | mssh iterm -u ubuntu
|
18
|
+
```
|
19
19
|
|
20
|
-
Author is Lachlan Donald <lachlan@ljd.cc>
|
data/bin/awsquery
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'fog'
|
5
5
|
require 'optparse'
|
6
|
+
require 'json/pure'
|
6
7
|
|
7
8
|
options = {
|
8
9
|
:default_key => 'Name',
|
9
10
|
:state => 'running',
|
10
11
|
:verbose => false,
|
12
|
+
:json => false,
|
11
13
|
}
|
12
14
|
|
13
15
|
OptionParser.new do |opts|
|
@@ -18,15 +20,18 @@ OptionParser.new do |opts|
|
|
18
20
|
opts.on("-s", "--state STATE", "Filter by state") do |s|
|
19
21
|
options[:state] = s
|
20
22
|
end
|
23
|
+
opts.on("-j", "Output in JSON") do |j|
|
24
|
+
options[:json] = j
|
25
|
+
end
|
21
26
|
end.parse!
|
22
27
|
|
23
28
|
compute = Fog::Compute.new(
|
24
|
-
:provider => 'AWS',
|
25
|
-
:aws_access_key_id => ENV['ACCESS_KEY_ID'],
|
29
|
+
:provider => 'AWS',
|
30
|
+
:aws_access_key_id => ENV['ACCESS_KEY_ID'],
|
26
31
|
:aws_secret_access_key => ENV['SECRET_ACCESS_KEY']
|
27
32
|
)
|
28
33
|
|
29
|
-
# apply basic filters
|
34
|
+
# apply basic filters
|
30
35
|
servers = compute.servers
|
31
36
|
servers.reject! { |s| s.state != options[:state] }
|
32
37
|
|
@@ -38,10 +43,14 @@ ARGV.each do |arg|
|
|
38
43
|
servers.reject! { |s| !s.tags.key? key or s.tags[key] != value }
|
39
44
|
end
|
40
45
|
|
41
|
-
# output
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
+
# output either json or lines
|
47
|
+
if options[:json]
|
48
|
+
jj servers
|
49
|
+
else
|
50
|
+
servers.each do |server|
|
51
|
+
print server.dns_name
|
52
|
+
print " => %s" % server.tags.inspect if options[:verbose]
|
53
|
+
puts
|
54
|
+
end
|
46
55
|
end
|
47
56
|
|
data/bin/{awsssh → mssh}
RENAMED
@@ -1,7 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# ssh helper, reads hosts from stdin
|
4
|
+
# see https://github.com/opscode/chef/blob/master/chef/lib/chef/knife/ssh.rb
|
5
|
+
|
3
6
|
require 'rubygems'
|
4
7
|
require 'optparse'
|
8
|
+
require 'json'
|
5
9
|
|
6
10
|
options = {
|
7
11
|
:verbose => false,
|
@@ -18,14 +22,17 @@ OptionParser.new do |opts|
|
|
18
22
|
end
|
19
23
|
end.parse!
|
20
24
|
|
21
|
-
|
22
|
-
servers = []
|
25
|
+
input = STDIN.read
|
23
26
|
|
24
|
-
|
25
|
-
|
27
|
+
# detect if stdin is json
|
28
|
+
if input.match /^[{\[]/
|
29
|
+
servers = JSON.parse(input)
|
30
|
+
else
|
31
|
+
servers = input.split("\n").collect do |a|
|
32
|
+
{ 'dns_name' => a, 'tags' => [] }
|
33
|
+
end
|
26
34
|
end
|
27
35
|
|
28
|
-
|
29
36
|
def iterm(servers, options)
|
30
37
|
command = '
|
31
38
|
tell application "iTerm"
|
@@ -35,21 +42,17 @@ def iterm(servers, options)
|
|
35
42
|
servers.each_with_index do |server, t|
|
36
43
|
command << %Q|
|
37
44
|
tell myterm
|
38
|
-
|
39
|
-
tell
|
40
|
-
|
41
|
-
set name to "#{server[:
|
45
|
+
set mysession to (make new session at the end of sessions)
|
46
|
+
tell mysession
|
47
|
+
exec command "/usr/bin/ssh #{options[:user] ? options[:user]+'@'+server['dns_name'] : server['dns_name']}"
|
48
|
+
set name to "#{server['tags'].key?('Name') ? server['tags']['Name'] : server['dns_name']}"
|
42
49
|
end tell
|
43
50
|
end tell\n|
|
44
51
|
end
|
45
52
|
command << '
|
46
53
|
end tell
|
47
54
|
'
|
48
|
-
puts command
|
49
55
|
exec "osascript -e '#{command}' > /dev/null"
|
50
56
|
end
|
51
57
|
|
52
|
-
|
53
|
-
when "iterm"
|
54
|
-
iterm servers, options
|
55
|
-
end
|
58
|
+
iterm servers, options
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awsquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
16
|
-
requirement: &
|
16
|
+
requirement: &70294865862220 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,19 +21,30 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70294865862220
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &70294865860580 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70294865860580
|
25
36
|
description: A collection of tools for querying AWS hosts based on metadata and manipulating
|
26
37
|
them
|
27
38
|
email:
|
28
39
|
- lachlan@ljd.cc
|
29
40
|
executables:
|
30
41
|
- awsquery
|
31
|
-
-
|
42
|
+
- mssh
|
32
43
|
extensions: []
|
33
44
|
extra_rdoc_files: []
|
34
45
|
files:
|
35
46
|
- bin/awsquery
|
36
|
-
- bin/
|
47
|
+
- bin/mssh
|
37
48
|
- README.md
|
38
49
|
homepage: http://github.com/lox/awsquery
|
39
50
|
licenses: []
|