moonshot 2.0.0.beta1 → 2.0.0.beta2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cbd23bad6cfc674f3d79a842b49c50fe0de46cb
|
4
|
+
data.tar.gz: cbe254ca2d50e6c12e3e916e3d043c054e1a18af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a12347cc5ce9a357b932ca7772695af0d3bf527a1c7dd44dfa02dd2e2b01b8b70c1256e22a94505633af5378a142954c9ffe3c3f8400884e13ee1734e493aab
|
7
|
+
data.tar.gz: 6edbc749ab02ff73155d7e738b67661d90b2570651f092666a6cfc20e7f893692ebc1e7fa29a6010c83ad4824c02bfde7ea9919c6d2a6b824cb8e1d255a931dd
|
data/lib/moonshot/command.rb
CHANGED
@@ -16,6 +16,10 @@ class Moonshot::DeploymentMechanism::CodeDeploy # rubocop:disable ClassLength
|
|
16
16
|
# @param asg [Array, String]
|
17
17
|
# The logical name of the AutoScalingGroup to create and manage a Deployment
|
18
18
|
# Group for in CodeDeploy.
|
19
|
+
# @param optional_asg [Array, String]
|
20
|
+
# The logical name of the AutoScalingGroup to create and manage a Deployment
|
21
|
+
# Group for in CodeDeploy. This ASG doesn't have to exist. If it does, it
|
22
|
+
# will be added to the Deployment Group.
|
19
23
|
# @param role [String]
|
20
24
|
# IAM role with AWSCodeDeployRole policy. CodeDeployRole is considered as
|
21
25
|
# default role if its not specified.
|
@@ -29,13 +33,16 @@ class Moonshot::DeploymentMechanism::CodeDeploy # rubocop:disable ClassLength
|
|
29
33
|
# @param config_name [String]
|
30
34
|
# Name of the Deployment Config to use for CodeDeploy, By default we use
|
31
35
|
# CodeDeployDefault.OneAtATime.
|
36
|
+
# rubocop:disable Metrics/ParameterLists
|
32
37
|
def initialize(
|
33
38
|
asg: [],
|
39
|
+
optional_asg: [],
|
34
40
|
role: 'CodeDeployRole',
|
35
41
|
app_name: nil,
|
36
42
|
group_name: nil,
|
37
43
|
config_name: 'CodeDeployDefault.OneAtATime')
|
38
|
-
@asg_logical_ids = asg
|
44
|
+
@asg_logical_ids = Array(asg)
|
45
|
+
@optional_asg_logical_ids = Array(optional_asg)
|
39
46
|
@app_name = app_name
|
40
47
|
@group_name = group_name
|
41
48
|
@codedeploy_role = role
|
@@ -181,6 +188,16 @@ class Moonshot::DeploymentMechanism::CodeDeploy # rubocop:disable ClassLength
|
|
181
188
|
|
182
189
|
autoscaling_groups.push(groups.auto_scaling_groups.first)
|
183
190
|
end
|
191
|
+
@optional_asg_logical_ids.each do |asg_logical_id|
|
192
|
+
asg_name = stack.physical_id_for(asg_logical_id)
|
193
|
+
next unless asg_name
|
194
|
+
groups = as_client.describe_auto_scaling_groups(
|
195
|
+
auto_scaling_group_names: [asg_name]
|
196
|
+
)
|
197
|
+
unless groups.auto_scaling_groups.empty?
|
198
|
+
autoscaling_groups.push(groups.auto_scaling_groups.first)
|
199
|
+
end
|
200
|
+
end
|
184
201
|
autoscaling_groups
|
185
202
|
end
|
186
203
|
|
data/lib/moonshot/shell.rb
CHANGED
data/lib/moonshot/ssh_command.rb
CHANGED
@@ -14,7 +14,7 @@ module Moonshot
|
|
14
14
|
Moonshot.config.ssh_config.ssh_identity_file = v
|
15
15
|
end
|
16
16
|
|
17
|
-
parser.on('-s', '--instance INSTANCE_ID', 'Specific AWS EC2 ID to connect
|
17
|
+
parser.on('-s', '--instance INSTANCE_ID', 'Specific AWS EC2 ID to connect to') do |v|
|
18
18
|
Moonshot.config.ssh_instance = v
|
19
19
|
end
|
20
20
|
|
@@ -11,20 +11,20 @@ module Moonshot
|
|
11
11
|
|
12
12
|
asg = if groups.count == 1
|
13
13
|
groups.first
|
14
|
-
elsif
|
14
|
+
elsif groups.count > 1
|
15
15
|
unless @asg_name
|
16
16
|
raise 'Multiple Auto Scaling Groups found in the stack. Please specify which '\
|
17
17
|
'one to SSH into using the --auto-scaling-group (-g) option.'
|
18
18
|
end
|
19
|
-
groups.detect { |x| x.logical_resource_id == @
|
19
|
+
groups.detect { |x| x.logical_resource_id == @asg_name }
|
20
20
|
end
|
21
21
|
raise 'Failed to find the Auto Scaling Group.' unless asg
|
22
22
|
|
23
23
|
Aws::AutoScaling::Client.new.describe_auto_scaling_groups(
|
24
24
|
auto_scaling_group_names: [asg.physical_resource_id]
|
25
25
|
).auto_scaling_groups.first.instances.map(&:instance_id).first
|
26
|
-
rescue
|
27
|
-
raise
|
26
|
+
rescue => e
|
27
|
+
raise "Failed to select an instance from the Auto Scaling Group: #{e.message}"
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -111,13 +111,21 @@ module Moonshot
|
|
111
111
|
end
|
112
112
|
|
113
113
|
def instance_row(asg_instance, ec2_instance)
|
114
|
+
if ec2_instance
|
115
|
+
ip_address = ec2_instance.public_ip_address || "#{ec2_instance.private_ip_address} (PRV)"
|
116
|
+
uptime = uptime_format(ec2_instance.launch_time)
|
117
|
+
else
|
118
|
+
# We've seen race conditions where ASG tells us about instances that EC2 is no longer
|
119
|
+
# aware of.
|
120
|
+
ip_address = 'unknown'
|
121
|
+
uptime = 'unknown'
|
122
|
+
end
|
114
123
|
[
|
115
124
|
asg_instance.instance_id,
|
116
|
-
|
117
|
-
ec2_instance.public_ip_address,
|
125
|
+
ip_address,
|
118
126
|
lifecycle_color(asg_instance.lifecycle_state),
|
119
127
|
health_color(asg_instance.health_status),
|
120
|
-
|
128
|
+
uptime
|
121
129
|
]
|
122
130
|
end
|
123
131
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moonshot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cloud Engineering <engineering@acquia.com>
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|