orchestration 0.3.14 → 0.3.15
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/README.md +1 -1
- data/lib/orchestration/docker_compose.rb +0 -1
- data/lib/orchestration/docker_compose/app_service.rb +8 -5
- data/lib/orchestration/docker_compose/configuration.rb +1 -2
- data/lib/orchestration/docker_compose/install_generator.rb +2 -3
- data/lib/orchestration/services.rb +0 -1
- data/lib/orchestration/services/configuration_base.rb +2 -4
- data/lib/orchestration/services/mongo/configuration.rb +8 -2
- data/lib/orchestration/services/rabbitmq/configuration.rb +19 -1
- data/lib/orchestration/templates/deploy.mk.erb +0 -4
- data/lib/orchestration/templates/orchestration.mk.erb +4 -14
- data/lib/orchestration/version.rb +1 -1
- data/lib/tasks/orchestration.rake +0 -7
- metadata +2 -6
- data/lib/orchestration/docker_compose/haproxy_service.rb +0 -25
- data/lib/orchestration/services/haproxy.rb +0 -11
- data/lib/orchestration/services/haproxy/configuration.rb +0 -22
- data/lib/orchestration/services/haproxy/healthcheck.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff7499be14d897dc5d5385c55f9879e3e0f4a5d8e26ff2b1900da4bdf89ac8d1
|
4
|
+
data.tar.gz: '00181ce547be977794bd8fc168adda7e846402bb8a0d0ee26495efc9f731c892'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d903f4a1ebadb2f58d4ad227257596895213f9a837b35a6eed340ca73a4d731c1e0a3a5665592b070acbec11b2b56bfb342dcec22a4ee59f3cb117391a010b3
|
7
|
+
data.tar.gz: 4bf720ae1e9fa003dabe45590b6a7099778327e0c4a62a16e7873407b14a6a822e77a04b127374573592729a833b75fbf73ceb82e9e367854444ff192aae3639
|
data/README.md
CHANGED
@@ -11,5 +11,4 @@ require 'orchestration/docker_compose/configuration'
|
|
11
11
|
require 'orchestration/docker_compose/app_service'
|
12
12
|
require 'orchestration/docker_compose/database_service'
|
13
13
|
require 'orchestration/docker_compose/mongo_service'
|
14
|
-
require 'orchestration/docker_compose/haproxy_service'
|
15
14
|
require 'orchestration/docker_compose/rabbitmq_service'
|
@@ -11,7 +11,8 @@ module Orchestration
|
|
11
11
|
def definition
|
12
12
|
{
|
13
13
|
'image' => '${DOCKER_ORGANIZATION}/${DOCKER_REPOSITORY}',
|
14
|
-
'environment' => environment
|
14
|
+
'environment' => environment,
|
15
|
+
'ports' => ports
|
15
16
|
}
|
16
17
|
end
|
17
18
|
|
@@ -23,8 +24,7 @@ module Orchestration
|
|
23
24
|
'RAILS_SERVE_STATIC_FILES' => '1',
|
24
25
|
'UNICORN_PRELOAD_APP' => '1',
|
25
26
|
'UNICORN_TIMEOUT' => '60',
|
26
|
-
'UNICORN_WORKER_PROCESSES' => '8'
|
27
|
-
'SERVICE_PORTS' => '8080'
|
27
|
+
'UNICORN_WORKER_PROCESSES' => '8'
|
28
28
|
}.merge(inherited_environment)
|
29
29
|
end
|
30
30
|
|
@@ -33,10 +33,13 @@ module Orchestration
|
|
33
33
|
'DATABASE_URL' => nil,
|
34
34
|
'HOST_UID' => nil,
|
35
35
|
'RAILS_ENV' => nil,
|
36
|
-
'SECRET_KEY_BASE' => nil
|
37
|
-
'VIRTUAL_HOST' => nil
|
36
|
+
'SECRET_KEY_BASE' => nil
|
38
37
|
}
|
39
38
|
end
|
39
|
+
|
40
|
+
def ports
|
41
|
+
['${LISTEN_PORT}:8080']
|
42
|
+
end
|
40
43
|
end
|
41
44
|
end
|
42
45
|
end
|
@@ -83,7 +83,7 @@ module Orchestration
|
|
83
83
|
when :test, :development
|
84
84
|
%i[database mongo rabbitmq]
|
85
85
|
when :production
|
86
|
-
%i[
|
86
|
+
%i[app database mongo rabbitmq]
|
87
87
|
when :local, nil
|
88
88
|
[]
|
89
89
|
else
|
@@ -102,8 +102,7 @@ module Orchestration
|
|
102
102
|
app: Orchestration::Services::App::Configuration,
|
103
103
|
database: Orchestration::Services::Database::Configuration,
|
104
104
|
mongo: Orchestration::Services::Mongo::Configuration,
|
105
|
-
rabbitmq: Orchestration::Services::RabbitMQ::Configuration
|
106
|
-
haproxy: Orchestration::Services::HAProxy::Configuration
|
105
|
+
rabbitmq: Orchestration::Services::RabbitMQ::Configuration
|
107
106
|
}.fetch(service).new(@env)
|
108
107
|
end
|
109
108
|
|
@@ -32,13 +32,11 @@ module Orchestration
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def local_port
|
35
|
-
|
36
|
-
|
37
|
-
return ENV.fetch('LISTEN_PORT', '3000').to_i if key == 'haproxy'
|
35
|
+
return ENV.fetch('LISTEN_PORT', '3000').to_i if @service_name == 'app'
|
38
36
|
|
39
37
|
@env.docker_compose_config
|
40
38
|
.fetch('services')
|
41
|
-
.fetch(
|
39
|
+
.fetch(@service_name)
|
42
40
|
.fetch('ports')
|
43
41
|
.first
|
44
42
|
.partition(':')
|
@@ -53,16 +53,22 @@ module Orchestration
|
|
53
53
|
def url_config
|
54
54
|
return nil unless ENV.key?('MONGO_URL')
|
55
55
|
|
56
|
-
host, _, port = ENV['MONGO_URL'].partition(':')
|
57
|
-
|
56
|
+
host, _, port = ENV['MONGO_URL'].rpartition('/').first.partition(':')
|
57
|
+
_, _, database = ENV['MONGO_URL'].rpartition('/')
|
58
|
+
{ host: host, port: port.empty? ? '27017' : port, database: database }
|
58
59
|
end
|
59
60
|
|
60
61
|
def database
|
62
|
+
return url_config[:database] unless url_config.nil?
|
63
|
+
|
61
64
|
env_config = config.fetch(@env.environment)
|
62
65
|
return env_config.fetch('database') if env_config.key?('database')
|
63
66
|
|
64
67
|
bad_config_error if clients_key.nil?
|
68
|
+
merged_config(env_config)
|
69
|
+
end
|
65
70
|
|
71
|
+
def merged_config(env_config)
|
66
72
|
env_config
|
67
73
|
.fetch(clients_key)
|
68
74
|
.fetch('default')
|
@@ -14,12 +14,17 @@ module Orchestration
|
|
14
14
|
return unless defined?(RabbitMQ)
|
15
15
|
return unless File.exist?(@env.rabbitmq_configuration_path)
|
16
16
|
|
17
|
+
if ENV.key?('RABBITMQ_URL')
|
18
|
+
@settings = from_url
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
17
22
|
@settings = config.fetch(@env.environment)
|
18
23
|
@settings.merge!('port' => PORT) unless @settings.key?('port')
|
19
24
|
end
|
20
25
|
|
21
26
|
def friendly_config
|
22
|
-
"[bunny] amqp://#{host}:#{
|
27
|
+
"[bunny] amqp://#{host}:#{port}"
|
23
28
|
end
|
24
29
|
|
25
30
|
private
|
@@ -27,6 +32,19 @@ module Orchestration
|
|
27
32
|
def config
|
28
33
|
yaml(File.read(@env.rabbitmq_configuration_path))
|
29
34
|
end
|
35
|
+
|
36
|
+
def host
|
37
|
+
@settings.fetch('host')
|
38
|
+
end
|
39
|
+
|
40
|
+
def port
|
41
|
+
@settings.fetch('port')
|
42
|
+
end
|
43
|
+
|
44
|
+
def from_url
|
45
|
+
uri = URI.parse(ENV.fetch('RABBITMQ_URL'))
|
46
|
+
{ 'host' => uri.host, 'port' => uri.port || 5672 }
|
47
|
+
end
|
30
48
|
end
|
31
49
|
end
|
32
50
|
end
|
@@ -46,6 +46,9 @@ endif
|
|
46
46
|
start:
|
47
47
|
@echo "Starting containers..."
|
48
48
|
ifeq (${env},$(filter ${env},test development))
|
49
|
+
@# If our hostname is also known to Docker as a container ID then join
|
50
|
+
@# the same network as our dependencies. This allows us to run side-car
|
51
|
+
@# dependencies if we are running in a container (e.g. in Jenkins).
|
49
52
|
@(docker ps --format "{{.ID}}" | grep -q $(shell hostname) && ${compose} up -d && docker network connect ${docker_repository}_${env}_default $(shell hostname)) || ${compose} up -d
|
50
53
|
else
|
51
54
|
@${compose} up -d --scale app=$${instances:-1}
|
@@ -55,6 +58,7 @@ endif
|
|
55
58
|
.PHONY: stop
|
56
59
|
stop:
|
57
60
|
@echo "Stopping containers..."
|
61
|
+
@(docker ps --format "{{.ID}}" | grep -q $(shell hostname) && docker network disconnect ${docker_repository}_${env}_default $(shell hostname))
|
58
62
|
@${compose} down
|
59
63
|
@echo "All containers stopped."
|
60
64
|
|
@@ -165,20 +169,6 @@ ifeq (${env},$(filter ${env},test development))
|
|
165
169
|
@${rake} orchestration:rabbitmq:wait
|
166
170
|
endif
|
167
171
|
|
168
|
-
## Production wait commands
|
169
|
-
|
170
|
-
.PHONY: wait-haproxy
|
171
|
-
wait-haproxy:
|
172
|
-
ifneq (${env},$(filter ${env},test development))
|
173
|
-
@${rake} orchestration:haproxy:wait LISTEN_PORT=${LISTEN_PORT}
|
174
|
-
endif
|
175
|
-
|
176
|
-
.PHONY: wait-app
|
177
|
-
wait-app:
|
178
|
-
ifneq (${env},$(filter ${env},test development))
|
179
|
-
@${rake} orchestration:app:wait LISTEN_PORT=${LISTEN_PORT}
|
180
|
-
endif
|
181
|
-
|
182
172
|
### Docker build commands ###
|
183
173
|
|
184
174
|
.PHONY: build
|
@@ -29,13 +29,6 @@ namespace :orchestration do
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
namespace :haproxy do
|
33
|
-
desc I18n.t('orchestration.rake.haproxy.wait')
|
34
|
-
task :wait do
|
35
|
-
Orchestration::Services::HAProxy::Healthcheck.start
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
32
|
namespace :rabbitmq do
|
40
33
|
desc I18n.t('orchestration.rake.rabbitmq.wait')
|
41
34
|
task :wait do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: orchestration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Farrell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -337,7 +337,6 @@ files:
|
|
337
337
|
- lib/orchestration/docker_compose/app_service.rb
|
338
338
|
- lib/orchestration/docker_compose/configuration.rb
|
339
339
|
- lib/orchestration/docker_compose/database_service.rb
|
340
|
-
- lib/orchestration/docker_compose/haproxy_service.rb
|
341
340
|
- lib/orchestration/docker_compose/install_generator.rb
|
342
341
|
- lib/orchestration/docker_compose/mongo_service.rb
|
343
342
|
- lib/orchestration/docker_compose/rabbitmq_service.rb
|
@@ -359,9 +358,6 @@ files:
|
|
359
358
|
- lib/orchestration/services/database/adapters/sqlite3.rb
|
360
359
|
- lib/orchestration/services/database/configuration.rb
|
361
360
|
- lib/orchestration/services/database/healthcheck.rb
|
362
|
-
- lib/orchestration/services/haproxy.rb
|
363
|
-
- lib/orchestration/services/haproxy/configuration.rb
|
364
|
-
- lib/orchestration/services/haproxy/healthcheck.rb
|
365
361
|
- lib/orchestration/services/healthcheck_base.rb
|
366
362
|
- lib/orchestration/services/listener.rb
|
367
363
|
- lib/orchestration/services/listener/configuration.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Orchestration
|
4
|
-
module DockerCompose
|
5
|
-
class HAProxyService
|
6
|
-
def initialize(config, environment)
|
7
|
-
@environment = environment
|
8
|
-
@config = config
|
9
|
-
end
|
10
|
-
|
11
|
-
def definition
|
12
|
-
{
|
13
|
-
'deploy' => {
|
14
|
-
'placement' => { 'constraints' => ['node.role == manager'] }
|
15
|
-
},
|
16
|
-
'image' => 'dockercloud/haproxy',
|
17
|
-
'ports' => %w[${LISTEN_PORT}:80],
|
18
|
-
'volumes' => [
|
19
|
-
'/var/run/docker.sock:/var/run/docker.sock:ro'
|
20
|
-
]
|
21
|
-
}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Orchestration
|
4
|
-
module Services
|
5
|
-
module HAProxy
|
6
|
-
class Configuration
|
7
|
-
include ConfigurationBase
|
8
|
-
|
9
|
-
self.service_name = 'haproxy'
|
10
|
-
|
11
|
-
def initialize(env, service_name = nil)
|
12
|
-
super
|
13
|
-
@settings = {}
|
14
|
-
end
|
15
|
-
|
16
|
-
def friendly_config
|
17
|
-
"[haproxy] #{host}:#{local_port}"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Orchestration
|
4
|
-
module Services
|
5
|
-
module HAProxy
|
6
|
-
class Healthcheck
|
7
|
-
include HealthcheckBase
|
8
|
-
|
9
|
-
def connect
|
10
|
-
Net::HTTP.start('localhost', @configuration.local_port)
|
11
|
-
end
|
12
|
-
|
13
|
-
def connection_errors
|
14
|
-
[Errno::ECONNREFUSED]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|