omc 0.0.7 → 0.0.8
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/lib/omc/account.rb +1 -1
- data/lib/omc/cli.rb +16 -7
- data/lib/omc/stack.rb +9 -9
- data/lib/omc/stack_command.rb +27 -7
- data/lib/omc/version.rb +1 -1
- data/omc.gemspec +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6f0467e39b53057c023904b1d13696c2959bf9f
|
4
|
+
data.tar.gz: 89ca19b9cf793ca0a38e6dc1e0f9353457a26f7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 642d1acc7fdc9fc3e06c0c45cd75ac4bf6a875b60c4e65cae90aed0a059c1f636ca4638819ceaba636942b23c50cf9ee012569c37d69d07d58efa06810358d77
|
7
|
+
data.tar.gz: ebe7a0e6e7fb88a09732835b0ce89ee50088e2147945f74bf1b2aea8c5306bea8eca53c4941db0cf2347c6523b97659f686080c5240ccb0b567cce2f55a2a9a6
|
data/lib/omc/account.rb
CHANGED
data/lib/omc/cli.rb
CHANGED
@@ -11,41 +11,50 @@ module Omc
|
|
11
11
|
|
12
12
|
desc 'ssh STACK', 'Connect to an instance on a stack on an account'
|
13
13
|
def ssh(stack)
|
14
|
-
command = StackCommand.new(user, stack, layer: options[:layer])
|
14
|
+
command = StackCommand.new(aws_account, user, stack, layer: options[:layer])
|
15
15
|
command.ssh
|
16
16
|
end
|
17
17
|
|
18
|
+
desc 'ssh_exec STACK COMMAND', 'Connect to an instance on a stack on an account and execute a command'
|
19
|
+
def ssh_exec(stack, user_command)
|
20
|
+
command = StackCommand.new(aws_account, user, stack, layer: options[:layer])
|
21
|
+
command.ssh_and_execute user_command
|
22
|
+
end
|
23
|
+
|
18
24
|
desc 'console STACK', 'Run a rails console on the given stack'
|
19
25
|
method_option :app
|
20
26
|
def console(stack)
|
21
|
-
command = StackCommand.new(user, stack, app: options[:app], layer: options[:layer])
|
27
|
+
command = StackCommand.new(aws_account, user, stack, app: options[:app], layer: options[:layer])
|
22
28
|
command.console
|
23
29
|
end
|
24
30
|
|
25
31
|
desc 'db STACK', 'Connect and run the database client on the given stack'
|
26
32
|
method_option :app
|
27
33
|
def db(stack)
|
28
|
-
command = StackCommand.new(user, stack, app: options[:app], layer: options[:layer])
|
34
|
+
command = StackCommand.new(aws_account, user, stack, app: options[:app], layer: options[:layer])
|
29
35
|
command.db
|
30
36
|
end
|
31
37
|
|
32
38
|
desc 'unicorn ACTION STACK', 'Connect and run the given action on the unicorns'
|
33
39
|
method_option :app
|
34
40
|
def unicorn(action, stack)
|
35
|
-
command = StackCommand.new(user, stack, app: options[:app])
|
41
|
+
command = StackCommand.new(aws_account, user, stack, app: options[:app])
|
36
42
|
command.unicorn(action)
|
37
43
|
end
|
38
44
|
|
39
45
|
desc 'status STACK', 'Show the instance status for the given stack'
|
40
46
|
def status(stack)
|
41
|
-
command = StackCommand.new(user, stack, app: options[:app], layer: options[:layer])
|
47
|
+
command = StackCommand.new(aws_account, user, stack, app: options[:app], layer: options[:layer])
|
42
48
|
command.status(self)
|
43
49
|
end
|
44
50
|
|
45
51
|
private
|
46
52
|
def user
|
47
|
-
|
48
|
-
|
53
|
+
aws_account.users.first || abort("No users configured under #{account.inspect}")
|
54
|
+
end
|
55
|
+
|
56
|
+
def aws_account
|
57
|
+
vault.account(account) || abort("Account #{account.inspect} not configured")
|
49
58
|
end
|
50
59
|
|
51
60
|
def account
|
data/lib/omc/stack.rb
CHANGED
@@ -17,21 +17,15 @@ module Omc
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def instances
|
20
|
-
@instances ||=
|
21
|
-
::Omc::Instance.new(self, instance)
|
22
|
-
end
|
20
|
+
@instances ||= describe(:instances).map{ |instance| Instance.new(self, instance) }
|
23
21
|
end
|
24
22
|
|
25
23
|
def apps
|
26
|
-
@apps ||=
|
27
|
-
::Omc::App.new(self, app)
|
28
|
-
end
|
24
|
+
@apps ||= describe(:apps).map{ |app| App.new(self, app) }
|
29
25
|
end
|
30
26
|
|
31
27
|
def layers
|
32
|
-
@layers ||=
|
33
|
-
::Omc::Layer.new(self, layer)
|
34
|
-
end
|
28
|
+
@layers ||= describe(:layers).map{ |layer| Layer.new(self, layer) }
|
35
29
|
end
|
36
30
|
|
37
31
|
def execute_recipes(app, recipes: [], name: "execute_recipes")
|
@@ -46,5 +40,11 @@ module Omc
|
|
46
40
|
}
|
47
41
|
)
|
48
42
|
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def describe(object)
|
47
|
+
client.public_send("describe_#{object}", stack_id: self[:stack_id])[object]
|
48
|
+
end
|
49
49
|
end
|
50
50
|
end
|
data/lib/omc/stack_command.rb
CHANGED
@@ -3,7 +3,8 @@ require 'omc/account'
|
|
3
3
|
|
4
4
|
module Omc
|
5
5
|
class StackCommand
|
6
|
-
def initialize user, stack_name, app: nil, layer: nil
|
6
|
+
def initialize aws_account, user, stack_name, app: nil, layer: nil
|
7
|
+
@aws_account = aws_account
|
7
8
|
@user = user
|
8
9
|
@stack_name = stack_name
|
9
10
|
@app_name = app
|
@@ -11,15 +12,15 @@ module Omc
|
|
11
12
|
end
|
12
13
|
|
13
14
|
def ssh
|
14
|
-
exec "ssh", ssh_host
|
15
|
+
exec "ssh", *([ssh_host] + default_ssh_args)
|
15
16
|
end
|
16
17
|
|
17
18
|
def console
|
18
|
-
|
19
|
+
ssh_and_execute_as_deploy "cd /srv/www/#{app[:shortname]}/current && RAILS_ENV=#{app[:attributes]['RailsEnv']} bundle exec rails c"
|
19
20
|
end
|
20
21
|
|
21
22
|
def db
|
22
|
-
|
23
|
+
ssh_and_execute_as_deploy "cd /srv/www/#{app[:shortname]}/current && RAILS_ENV=#{app[:attributes]['RailsEnv']} bundle exec rails db -p"
|
23
24
|
end
|
24
25
|
|
25
26
|
def unicorn(action)
|
@@ -40,14 +41,22 @@ module Omc
|
|
40
41
|
i[:availability_zone],
|
41
42
|
i[:ec2_instance_id],
|
42
43
|
i[:public_ip],
|
44
|
+
i[:private_ip],
|
43
45
|
]
|
44
46
|
end
|
45
47
|
thor.print_table(details)
|
46
48
|
end
|
47
49
|
|
48
|
-
private
|
49
50
|
def ssh_and_execute(command)
|
50
|
-
|
51
|
+
puts "Executing '#{command}'"
|
52
|
+
args = default_ssh_args + ['-t', ssh_host, command]
|
53
|
+
|
54
|
+
exec 'ssh', *args
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
def ssh_and_execute_as_deploy(command)
|
59
|
+
ssh_and_execute "sudo su deploy -c '#{command}'"
|
51
60
|
end
|
52
61
|
|
53
62
|
def app
|
@@ -70,7 +79,10 @@ module Omc
|
|
70
79
|
end
|
71
80
|
|
72
81
|
def ssh_host
|
73
|
-
|
82
|
+
ip_address = bastion ? instance[:private_ip] : instance[:public_ip]
|
83
|
+
host = "#{@user.name}@#{ip_address}"
|
84
|
+
puts "Connecting to #{host}"
|
85
|
+
host
|
74
86
|
end
|
75
87
|
|
76
88
|
def account
|
@@ -81,6 +93,14 @@ module Omc
|
|
81
93
|
@stack ||= get_by_name(account.stacks, @stack_name)
|
82
94
|
end
|
83
95
|
|
96
|
+
def bastion
|
97
|
+
@aws_account.bastions.detect { |y| y.name == @stack_name }
|
98
|
+
end
|
99
|
+
|
100
|
+
def default_ssh_args
|
101
|
+
bastion ? [ '-o', "ProxyCommand ssh -W %h:%p #{bastion.host}" ] : []
|
102
|
+
end
|
103
|
+
|
84
104
|
def get_by_name collection, name, key: :name
|
85
105
|
collection.detect do |x|
|
86
106
|
x[key] == name
|
data/lib/omc/version.rb
CHANGED
data/omc.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency "thor", '~> 0.19'
|
21
|
-
spec.add_dependency "aws_cred_vault", '~> 0.0'
|
21
|
+
spec.add_dependency "aws_cred_vault", '~> 0.0.7'
|
22
22
|
spec.add_dependency "aws-sdk", '~> 1.56'
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clarke Brunsdon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.0.7
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.0.7
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: aws-sdk
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
142
|
+
rubygems_version: 2.4.5
|
143
143
|
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: Opsworks Missing Console - Useful Commands for Opsworks
|