skyed 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/skyed.rb +1 -1
- data/lib/skyed/aws.rb +25 -5
- data/lib/skyed/commands.rb +14 -2
- data/lib/skyed/create.rb +49 -2
- data/lib/skyed/settings.rb +4 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b27a8404cf87eb1e4afb937814581a898bd03770
|
4
|
+
data.tar.gz: 60d273c48e9ae11f7e0a6a30e8fc467da703f0ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6107f8e6876a9ccada9e29034fdcbde09698248ea34016fd852d062369c75610d9a85bd8651d0253e52833635ceee5a572393b036b3e6c5f820f7abfa116d61
|
7
|
+
data.tar.gz: b815d6ec22244760a8f11f356e4cf58cd750ad1dbb6e5cbc8fe807f8f55c164959089ee588cabb2f5c74811b866d22b0407f3bf9069779fa4eaa7484011e9db2
|
data/lib/skyed.rb
CHANGED
data/lib/skyed/aws.rb
CHANGED
@@ -42,15 +42,13 @@ module Skyed
|
|
42
42
|
module RDS
|
43
43
|
class << self
|
44
44
|
def create_instance_from_snapshot(
|
45
|
-
instance_name,
|
46
|
-
snapshot,
|
47
|
-
_options,
|
48
|
-
rds = nil)
|
45
|
+
instance_name, snapshot, options, rds = nil)
|
49
46
|
rds = login if rds.nil?
|
50
47
|
rds.restore_db_instance_from_db_snapshot(
|
51
48
|
db_instance_identifier: instance_name,
|
52
49
|
db_snapshot_identifier: snapshot)[:db_instance]
|
53
|
-
db_instance = wait_for_instance(
|
50
|
+
db_instance = wait_for_instance(
|
51
|
+
instance_name, 'available', options[:wait_interval], rds)
|
54
52
|
"#{db_instance[:endpoint][:address]}:#{db_instance[:endpoint][:port]}"
|
55
53
|
end
|
56
54
|
|
@@ -160,6 +158,28 @@ module Skyed
|
|
160
158
|
}
|
161
159
|
|
162
160
|
class << self
|
161
|
+
def create_instance(stack_id, layer_id, instance_type, opsworks)
|
162
|
+
instance = opsworks.create_instance(
|
163
|
+
stack_id: stack_id,
|
164
|
+
layer_ids: [layer_id],
|
165
|
+
instance_type: instance_type)
|
166
|
+
opsworks.start_instance(instance_id: instance.instance_id)
|
167
|
+
wait_for_instance_id(
|
168
|
+
instance.instance_id,
|
169
|
+
'online',
|
170
|
+
opsworks)
|
171
|
+
end
|
172
|
+
|
173
|
+
def wait_for_instance_id(instance_id, status, opsworks)
|
174
|
+
instance = opsworks.describe_instances(
|
175
|
+
instance_ids: [instance_id]).instances.first
|
176
|
+
until instance.nil? || instance.status == status
|
177
|
+
sleep(0)
|
178
|
+
instance = opsworks.describe_instances(
|
179
|
+
instance_ids: [instance_id]).instances.first
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
163
183
|
def deregister_instance(hostname, opsworks)
|
164
184
|
instance = instance_by_name(
|
165
185
|
hostname, Skyed::Settings.stack_id, opsworks)
|
data/lib/skyed/commands.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
version Skyed::VERSION
|
2
|
+
|
1
3
|
desc 'Initialize skyed'
|
2
4
|
long_desc 'Sets up skyed configuration for a repository'
|
3
5
|
|
@@ -89,12 +91,22 @@ command :create do |cmd|
|
|
89
91
|
cmd.flag [:password], default_value: 'password',
|
90
92
|
type: String,
|
91
93
|
desc: 'Master password of the RDS instance'
|
92
|
-
|
94
|
+
cmd.flag [:s, :stack], default_value: nil,
|
95
|
+
type: String,
|
96
|
+
desc: stack_desc
|
97
|
+
cmd.flag [:l, :layer], default_value: nil,
|
98
|
+
type: String,
|
99
|
+
desc: layer_desc
|
100
|
+
desc = 'Time to wait for AWS responses'
|
101
|
+
cmd.flag [:w, :wait_interval, 'wait-interval'], default_value: 30,
|
102
|
+
type: Integer,
|
103
|
+
desc: desc
|
104
|
+
defval = 'default'
|
93
105
|
desc = 'Name of the DB Security Group'
|
94
106
|
cmd.flag [:db_security_group, 'db-security-group'], default_value: defval,
|
95
107
|
type: String,
|
96
108
|
desc: desc
|
97
|
-
defval = 'default'
|
109
|
+
defval = 'default.postgres9.4'
|
98
110
|
desc = 'Name of the DB Parameter Group'
|
99
111
|
cmd.flag [:db_parameters_group, 'db-parameters-group'], default_value: defval,
|
100
112
|
type: String,
|
data/lib/skyed/create.rb
CHANGED
@@ -1,9 +1,44 @@
|
|
1
1
|
module Skyed
|
2
2
|
# This module encapsulates all the create command steps.
|
3
3
|
module Create
|
4
|
+
@non_rds_options = [:rds, :stack, :layer]
|
4
5
|
class << self
|
5
6
|
def execute(_global_options, options, args)
|
6
7
|
Skyed::Init.credentials if Skyed::Settings.empty?
|
8
|
+
execute_rds(options, args) if options[:rds]
|
9
|
+
create_opsworks(options, args) unless options[:rds]
|
10
|
+
end
|
11
|
+
|
12
|
+
def check_create_options(options)
|
13
|
+
msg = 'Specify stack and layer or initialize for local management'
|
14
|
+
fail msg unless options[:stack] && options[:layer]
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_opsworks(options, _args)
|
18
|
+
check_create_options(options)
|
19
|
+
ow = settings(options)
|
20
|
+
Skyed::AWS::OpsWorks.create_instance(
|
21
|
+
Skyed::Settings.stack_id,
|
22
|
+
Skyed::Settings.layer_id,
|
23
|
+
options[:type],
|
24
|
+
ow)
|
25
|
+
end
|
26
|
+
|
27
|
+
def stack(ow, options)
|
28
|
+
stack = Skyed::AWS::OpsWorks.stack(options[:stack], ow)
|
29
|
+
msg = "There's no such stack with id #{options[:stack]}"
|
30
|
+
fail msg unless stack
|
31
|
+
stack[:stack_id]
|
32
|
+
end
|
33
|
+
|
34
|
+
def layer(ow, options)
|
35
|
+
layer = Skyed::AWS::OpsWorks.layer(options[:layer], ow)
|
36
|
+
msg = "There's no such layer with id #{options[:layer]}"
|
37
|
+
fail msg unless layer
|
38
|
+
layer[:layer_id]
|
39
|
+
end
|
40
|
+
|
41
|
+
def execute_rds(options, args)
|
7
42
|
endpoint = create_new(options, args) if args.length == 1
|
8
43
|
endpoint = restore_new(options, args) if args.length == 2
|
9
44
|
puts endpoint
|
@@ -13,13 +48,25 @@ module Skyed
|
|
13
48
|
Skyed::AWS::RDS.create_instance_from_snapshot(
|
14
49
|
args[0],
|
15
50
|
args[1],
|
16
|
-
options.select { |k|
|
51
|
+
options.select { |k| ! @non_rds_options.include? k })
|
17
52
|
end
|
18
53
|
|
19
54
|
def create_new(options, args)
|
20
55
|
Skyed::AWS::RDS.create_instance(
|
21
56
|
args[0],
|
22
|
-
options.select { |k|
|
57
|
+
options.select { |k| ! @non_rds_options.include? k })
|
58
|
+
end
|
59
|
+
|
60
|
+
def settings(options)
|
61
|
+
ow = login
|
62
|
+
Skyed::Settings.stack_id = stack(ow, options)
|
63
|
+
Skyed::Settings.layer_id = layer(ow, options)
|
64
|
+
ow
|
65
|
+
end
|
66
|
+
|
67
|
+
def login
|
68
|
+
Skyed::Init.credentials if Skyed::Settings.empty?
|
69
|
+
Skyed::AWS::OpsWorks.login
|
23
70
|
end
|
24
71
|
end
|
25
72
|
end
|
data/lib/skyed/settings.rb
CHANGED
@@ -28,11 +28,14 @@ module Skyed
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def method_missing(name, *args)
|
31
|
+
msg = "unknown configuration root #{name}."
|
32
|
+
msg += ' Initialize skyed or export PKEY'
|
31
33
|
if name.match(/.*=/)
|
32
34
|
@_settings[name.to_s.split('=')[0]] = args[0]
|
33
35
|
else
|
34
36
|
@_settings[name.to_s] ||
|
35
|
-
fail(
|
37
|
+
fail(
|
38
|
+
NoMethodError, msg, caller)
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skyed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignasi Fosch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|