toquen 0.0.6 → 0.0.7
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 +14 -0
- data/lib/toquen.rb +1 -0
- data/lib/toquen/aws.rb +6 -1
- data/lib/toquen/capistrano.rb +14 -0
- data/lib/toquen/details_table.rb +40 -0
- data/lib/toquen/local_writer.rb +3 -1
- data/lib/toquen/version.rb +1 -1
- data/toquen.gemspec +2 -0
- metadata +36 -3
data/README.md
CHANGED
@@ -96,3 +96,17 @@ You can also manually specify the version of rubygems you want installed (defaul
|
|
96
96
|
```ruby
|
97
97
|
set :rubygems_version, "2.1.11"
|
98
98
|
```
|
99
|
+
|
100
|
+
## View Instances
|
101
|
+
To see details about your aws instances you can use the **details** cap task.
|
102
|
+
|
103
|
+
$ cap all details
|
104
|
+
|
105
|
+
Or for a given role with:
|
106
|
+
|
107
|
+
$ cap <role name> details
|
108
|
+
|
109
|
+
Or for a given server with:
|
110
|
+
|
111
|
+
$ cap server-<server name> details
|
112
|
+
|
data/lib/toquen.rb
CHANGED
data/lib/toquen/aws.rb
CHANGED
@@ -2,6 +2,8 @@ require 'aws'
|
|
2
2
|
|
3
3
|
module Toquen
|
4
4
|
class AWSProxy
|
5
|
+
attr_reader :regions
|
6
|
+
|
5
7
|
def initialize
|
6
8
|
@key_id = fetch(:aws_access_key_id)
|
7
9
|
@key = fetch(:aws_secret_access_key)
|
@@ -26,7 +28,10 @@ module Toquen
|
|
26
28
|
:internal_ip => i.private_ip_address,
|
27
29
|
:external_ip => i.public_ip_address,
|
28
30
|
:name => i.tags["Name"],
|
29
|
-
:roles => Toquen.config.aws_roles_extractor.call(i)
|
31
|
+
:roles => Toquen.config.aws_roles_extractor.call(i),
|
32
|
+
:type => i.instance_type,
|
33
|
+
:external_dns => i.public_dns_name,
|
34
|
+
:internal_dns => i.private_dns_name
|
30
35
|
}
|
31
36
|
end
|
32
37
|
end
|
data/lib/toquen/capistrano.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'capistrano/setup'
|
2
2
|
require 'capistrano/console'
|
3
|
+
require 'set'
|
3
4
|
|
4
5
|
desc "update local cache of servers and roles"
|
5
6
|
task :update_roles do
|
@@ -94,6 +95,19 @@ task :toquen_install do
|
|
94
95
|
FileUtils.cp File.expand_path("../templates/deploy.rb", __FILE__), 'config/deploy.rb'
|
95
96
|
end
|
96
97
|
end
|
98
|
+
|
99
|
+
desc "Show all information about EC2 instances"
|
100
|
+
task :details do
|
101
|
+
filter_roles = Set.new fetch(:filter)[:roles]
|
102
|
+
aws = Toquen::AWSProxy.new
|
103
|
+
aws.regions.each do |region|
|
104
|
+
instances = aws.server_details_in(region).reject do |instance|
|
105
|
+
instance_roles = instance[:roles] + ["all", "server-#{instance[:name]}"]
|
106
|
+
(filter_roles.intersection instance_roles.to_set).empty?
|
107
|
+
end
|
108
|
+
Toquen::DetailsTable.new(instances, region).output unless instances.empty?
|
109
|
+
end
|
110
|
+
end
|
97
111
|
|
98
112
|
module Capistrano
|
99
113
|
module TaskEnhancements
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
require 'term/ansicolor'
|
3
|
+
|
4
|
+
module Toquen
|
5
|
+
class DetailsTable
|
6
|
+
|
7
|
+
def initialize(instances, region)
|
8
|
+
@instances = instances
|
9
|
+
@region = region
|
10
|
+
@color = Term::ANSIColor
|
11
|
+
end
|
12
|
+
|
13
|
+
def output
|
14
|
+
table = Terminal::Table.new(
|
15
|
+
:style => {
|
16
|
+
:border_x => "",
|
17
|
+
:border_i => "",
|
18
|
+
:border_y => ""
|
19
|
+
}
|
20
|
+
)
|
21
|
+
table.title = @color.bold { "Instances in #{@region}" }
|
22
|
+
header = [ "Name", "Roles", "Public", "Private", "Type" ]
|
23
|
+
table.add_row header.map { |h| @color.underline @color.bold h }
|
24
|
+
@instances.each do |instance|
|
25
|
+
table.add_row instance_to_row(instance)
|
26
|
+
end
|
27
|
+
puts table.to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
def instance_to_row(instance)
|
31
|
+
[
|
32
|
+
@color.green { instance[:name] },
|
33
|
+
@color.yellow { instance[:roles].join(",") },
|
34
|
+
instance[:external_dns].nil? ? "(N/A)" : @color.cyan(instance[:external_dns]) + " (#{instance[:external_ip]})",
|
35
|
+
instance[:internal_dns].nil? ? "(N/A)" : @color.cyan(instance[:internal_dns]) + " (#{instance[:internal_ip]})",
|
36
|
+
@color.red { instance[:type] }
|
37
|
+
]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/lib/toquen/local_writer.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
module Toquen
|
2
2
|
module LocalWriter
|
3
3
|
def self.create_databag_item(details)
|
4
|
-
|
4
|
+
servers = "#{fetch(:chef_data_bags_path)}/servers"
|
5
|
+
FileUtils.mkdir_p servers
|
6
|
+
open("#{servers}/#{details[:name]}.json", 'w') do |f|
|
5
7
|
f.write JSON.dump(details)
|
6
8
|
end
|
7
9
|
end
|
data/lib/toquen/version.rb
CHANGED
data/toquen.gemspec
CHANGED
@@ -18,5 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
gem.add_dependency('capistrano', '~> 3.0.1')
|
20
20
|
gem.add_dependency('aws-sdk')
|
21
|
+
gem.add_dependency('terminal-table')
|
22
|
+
gem.add_dependency('term-ansicolor')
|
21
23
|
gem.add_development_dependency("rdoc")
|
22
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toquen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -43,6 +43,38 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: terminal-table
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: term-ansicolor
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
46
78
|
- !ruby/object:Gem::Dependency
|
47
79
|
name: rdoc
|
48
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,6 +107,7 @@ files:
|
|
75
107
|
- lib/toquen/aws.rb
|
76
108
|
- lib/toquen/bootstrapper.rb
|
77
109
|
- lib/toquen/capistrano.rb
|
110
|
+
- lib/toquen/details_table.rb
|
78
111
|
- lib/toquen/local_writer.rb
|
79
112
|
- lib/toquen/templates/deploy.rb
|
80
113
|
- lib/toquen/templates/ubuntu_bootstrap.erb
|
@@ -94,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
127
|
version: '0'
|
95
128
|
segments:
|
96
129
|
- 0
|
97
|
-
hash:
|
130
|
+
hash: 3464588055419203147
|
98
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
132
|
none: false
|
100
133
|
requirements:
|
@@ -103,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
136
|
version: '0'
|
104
137
|
segments:
|
105
138
|
- 0
|
106
|
-
hash:
|
139
|
+
hash: 3464588055419203147
|
107
140
|
requirements: []
|
108
141
|
rubyforge_project:
|
109
142
|
rubygems_version: 1.8.25
|