orchestration 0.3.14 → 0.3.15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|