qops 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/qops/deployment/app.rb +7 -0
- data/lib/qops/deployment/helpers.rb +29 -6
- data/lib/qops/deployment/instances.rb +1 -0
- data/lib/qops/environment.rb +9 -1
- data/lib/qops/version.rb +1 -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: becc39290c6daab078f8e2ff60f35580868719e0
|
4
|
+
data.tar.gz: 95af5da002ad688a41bd099c9004e5e6b4db3a9a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 808fa94972bf2f7f43bbf9d29763230467a93643461d7340e0b131a998f375103256249c7628cad5ecd99296f2bbbe11f49278ee5eacafcf6f6cce7e97d189f4
|
7
|
+
data.tar.gz: 76e5233bae516c5e49ce39fcb10db5228004b3fd62cb652a3873ba6c8676ca80ae1f6b97dd0caab6f5af19071998a6ae7ef820d35a39b00aacefa2246b10f89c
|
data/lib/qops/deployment/app.rb
CHANGED
@@ -63,12 +63,19 @@ class Qops::Deploy < Thor
|
|
63
63
|
)
|
64
64
|
)
|
65
65
|
|
66
|
+
tag_instance(first_instance)
|
67
|
+
|
66
68
|
# Deploy any remaining instances with migration off for production
|
67
69
|
return unless config.deploy_type == 'production' && online_instances.count > 1
|
68
70
|
|
69
71
|
print 'Deploying remaining instances ...'
|
70
72
|
deployment_params = base_deployment_params.deep_dup
|
71
73
|
run_opsworks_command(deployment_params)
|
74
|
+
|
75
|
+
online_instances.each do |instance|
|
76
|
+
tag_instance(instance)
|
77
|
+
end
|
78
|
+
|
72
79
|
ping_slack(
|
73
80
|
'Quandl::Slack::Release',
|
74
81
|
'Deployed All Instances',
|
@@ -5,6 +5,7 @@ module Qops::DeployHelpers
|
|
5
5
|
|
6
6
|
included do
|
7
7
|
class_option :branch, type: :string, aliases: '-b', desc: 'The branch to use when deploying to staging type environments'
|
8
|
+
class_option :hostname, type: :string, aliases: '-h', desc: 'Fully override the hostname that qops would normally give the instance'
|
8
9
|
end
|
9
10
|
|
10
11
|
private
|
@@ -46,19 +47,41 @@ module Qops::DeployHelpers
|
|
46
47
|
instances.find { |k| k.hostname == requested_hostname }
|
47
48
|
end
|
48
49
|
|
50
|
+
def tag_instance(instance)
|
51
|
+
print "Tagging instance #{instance.hostname}\n"
|
52
|
+
config.ec2.create_tags(
|
53
|
+
resources: [instance.ec2_instance_id],
|
54
|
+
tags: [
|
55
|
+
{
|
56
|
+
key: 'environment',
|
57
|
+
value: config.deploy_type
|
58
|
+
}
|
59
|
+
]
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
49
63
|
def requested_hostname
|
50
64
|
return @requested_hostname if @requested_hostname
|
51
|
-
if
|
52
|
-
@requested_hostname =
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
65
|
+
if options[:hostname]
|
66
|
+
@requested_hostname = options[:hostname]
|
67
|
+
puts "NOTE: You have specified a custom hostname of #{@requested_hostname}. Be sure to continue to use this hostname for future commands to avoid problems."
|
68
|
+
|
69
|
+
# Alternative flow if user has not overridden the hostname
|
70
|
+
else
|
71
|
+
if config.deploy_type == 'staging'
|
72
|
+
@requested_hostname = default_revision.parameterize
|
73
|
+
elsif config.deploy_type == 'production'
|
74
|
+
@requested_hostname = config.app_name
|
75
|
+
existing_hostnames = retrieve_instances.map(&:hostname)
|
76
|
+
@requested_hostname += "-#{existing_hostnames.sort.last.to_s.split('-').last.to_i + 1}"
|
77
|
+
end
|
78
|
+
@requested_hostname = config.hostname_prefix + @requested_hostname
|
57
79
|
end
|
58
80
|
|
59
81
|
@requested_hostname = @requested_hostname.gsub(/[^A-Za-z0-9\-]+/, '-').gsub(/-+/, '-')
|
60
82
|
@requested_hostname = @requested_hostname[0..62]
|
61
83
|
@requested_hostname = @requested_hostname.match(/^([A-Za-z0-9\-]+).*$/)[1]
|
84
|
+
@requested_hostname
|
62
85
|
end
|
63
86
|
|
64
87
|
def default_revision
|
@@ -82,6 +82,7 @@ class Qops::Instance < Thor # rubocop:disable Metrics/ClassLength
|
|
82
82
|
puts "Public IP: #{instance.public_ip}"
|
83
83
|
puts "Private IP: #{instance.private_ip}"
|
84
84
|
|
85
|
+
tag_instance(instance)
|
85
86
|
setup_instance(instance, initial_instance_state, manifest)
|
86
87
|
|
87
88
|
if creating_instance
|
data/lib/qops/environment.rb
CHANGED
@@ -82,7 +82,11 @@ module Qops
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def opsworks
|
85
|
-
@
|
85
|
+
@_opsworks_client ||= Aws::OpsWorks::Client.new(region: configuration.region)
|
86
|
+
end
|
87
|
+
|
88
|
+
def ec2
|
89
|
+
@_ec2_client ||= Aws::EC2::Client.new(region: configuration.region)
|
86
90
|
end
|
87
91
|
|
88
92
|
def cookbook_json
|
@@ -97,6 +101,10 @@ module Qops
|
|
97
101
|
configuration.root_volume_size || 30
|
98
102
|
end
|
99
103
|
|
104
|
+
def hostname_prefix
|
105
|
+
configuration.hostname_prefix || ''
|
106
|
+
end
|
107
|
+
|
100
108
|
private
|
101
109
|
|
102
110
|
def method_missing(method_sym, *arguments, &block)
|
data/lib/qops/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Basset
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-04-
|
14
|
+
date: 2016-04-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: thor
|