orchestration 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +1 -1
  3. data/TODO +2 -12
  4. data/config/locales/en.yml +10 -13
  5. data/lib/orchestration/docker_compose/{application_service.rb → app_service.rb} +6 -5
  6. data/lib/orchestration/docker_compose/configuration.rb +69 -0
  7. data/lib/orchestration/docker_compose/database_service.rb +18 -25
  8. data/lib/orchestration/docker_compose/install_generator.rb +113 -0
  9. data/lib/orchestration/docker_compose/mongo_service.rb +15 -5
  10. data/lib/orchestration/docker_compose/nginx_proxy_service.rb +3 -2
  11. data/lib/orchestration/docker_compose/rabbitmq_service.rb +9 -5
  12. data/lib/orchestration/docker_compose.rb +3 -2
  13. data/lib/orchestration/environment.rb +32 -11
  14. data/lib/orchestration/errors.rb +3 -1
  15. data/lib/orchestration/file_helpers.rb +10 -5
  16. data/lib/orchestration/install_generator.rb +38 -51
  17. data/lib/orchestration/services/{application → app}/configuration.rb +5 -5
  18. data/lib/orchestration/services/{application → app}/healthcheck.rb +4 -4
  19. data/lib/orchestration/services/app.rb +13 -0
  20. data/lib/orchestration/services/configuration_base.rb +3 -1
  21. data/lib/orchestration/services/database/adapters/mysql2.rb +19 -0
  22. data/lib/orchestration/services/database/adapters/postgresql.rb +20 -0
  23. data/lib/orchestration/services/database/adapters/sqlite3.rb +4 -0
  24. data/lib/orchestration/services/database/configuration.rb +23 -13
  25. data/lib/orchestration/services/healthcheck_base.rb +1 -1
  26. data/lib/orchestration/services/nginx_proxy/configuration.rb +7 -2
  27. data/lib/orchestration/services.rb +1 -1
  28. data/lib/orchestration/templates/Makefile.erb +99 -40
  29. data/lib/orchestration/templates/application.mk.erb +14 -0
  30. data/lib/orchestration/templates/deploy.mk.erb +34 -0
  31. data/lib/orchestration/templates/docker-compose.override.yml.erb +1 -0
  32. data/lib/orchestration/templates/env.erb +6 -0
  33. data/lib/orchestration/templates/unicorn.rb.erb +1 -1
  34. data/lib/orchestration/terminal.rb +17 -1
  35. data/lib/orchestration/version.rb +1 -1
  36. data/lib/orchestration.rb +2 -1
  37. data/lib/tasks/orchestration.rake +7 -17
  38. metadata +13 -8
  39. data/lib/orchestration/docker_compose/services.rb +0 -59
  40. data/lib/orchestration/services/application.rb +0 -13
@@ -0,0 +1,6 @@
1
+ # Set VIRTUAL_HOST to whatever host(s) your application will be available on.
2
+ # See https://github.com/jwilder/nginx-proxy for more details on this variable.
3
+ VIRTUAL_HOST=localhost
4
+
5
+ # Set the port your application will be available on (via Nginx proxy)
6
+ LISTEN_PORT=3000
@@ -1,4 +1,4 @@
1
- listen '0.0.0.0:8080', :tcp_nopush => true
1
+ listen '0.0.0.0:8080', tcp_nopush: true
2
2
 
3
3
  pid '/app/tmp/pids/unicorn.pid'
4
4
 
@@ -15,6 +15,10 @@ module Orchestration
15
15
  }.freeze
16
16
 
17
17
  class Terminal
18
+ def initialize(settings)
19
+ @settings = settings
20
+ end
21
+
18
22
  def write(desc, message, color_name = nil, newline = true)
19
23
  output = newline ? "#{message}\n" : message.to_s
20
24
  STDOUT.print colorize(desc, output, color_name)
@@ -28,12 +32,20 @@ module Orchestration
28
32
  result
29
33
  end
30
34
 
35
+ def ask_setting(setting, default = nil)
36
+ return unless @settings.get(setting).nil?
37
+
38
+ write(:setup, t("settings.#{setting}.description"))
39
+ prompt = t("settings.#{setting}.prompt")
40
+ @settings.set(setting, read(prompt, default))
41
+ end
42
+
31
43
  private
32
44
 
33
45
  def prompt(message, default)
34
46
  return "(#{message}): " if default.nil?
35
47
 
36
- "(#{message}) [#{I18n.t('orchestration.default')}: #{default}]: "
48
+ "(#{message}) [#{t('default')}: #{default}]: "
37
49
  end
38
50
 
39
51
  def colorize(desc, message, color_name)
@@ -48,5 +60,9 @@ module Orchestration
48
60
  .colorize(mode: :default, color: color)
49
61
  .concat(' ' + message)
50
62
  end
63
+
64
+ def t(key)
65
+ I18n.t("orchestration.#{key}")
66
+ end
51
67
  end
52
68
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orchestration
4
- VERSION = '0.3.3'
4
+ VERSION = '0.3.4'
5
5
  end
data/lib/orchestration.rb CHANGED
@@ -8,10 +8,11 @@ require 'rails'
8
8
  I18n.load_path += Dir[File.join(File.expand_path('..', __dir__),
9
9
  'config', 'locales', '**', '*.yml')]
10
10
 
11
+ require 'orchestration/file_helpers'
12
+
11
13
  require 'orchestration/docker_compose'
12
14
  require 'orchestration/environment'
13
15
  require 'orchestration/errors'
14
- require 'orchestration/file_helpers'
15
16
  require 'orchestration/install_generator'
16
17
  require 'orchestration/railtie'
17
18
  require 'orchestration/service_check'
@@ -8,51 +8,41 @@ namespace :orchestration do
8
8
  Orchestration::InstallGenerator.start
9
9
  end
10
10
 
11
- namespace :application do
12
- desc I18n.t('orchestration.application.wait')
11
+ namespace :app do
12
+ desc I18n.t('orchestration.rake.app.wait')
13
13
  task :wait do
14
- Orchestration::Services::Application::Healthcheck.start
14
+ Orchestration::Services::App::Healthcheck.start
15
15
  end
16
16
  end
17
17
 
18
18
  namespace :database do
19
- desc I18n.t('orchestration.database.wait')
19
+ desc I18n.t('orchestration.rake.database.wait')
20
20
  task :wait do
21
21
  Orchestration::Services::Database::Healthcheck.start
22
22
  end
23
23
  end
24
24
 
25
25
  namespace :mongo do
26
- desc I18n.t('orchestration.mongo.wait')
26
+ desc I18n.t('orchestration.rake.mongo.wait')
27
27
  task :wait do
28
28
  Orchestration::Services::Mongo::Healthcheck.start
29
29
  end
30
30
  end
31
31
 
32
32
  namespace :nginx_proxy do
33
- desc I18n.t('orchestration.nginx-proxy.wait')
33
+ desc I18n.t('orchestration.rake.nginx_proxy.wait')
34
34
  task :wait do
35
35
  Orchestration::Services::NginxProxy::Healthcheck.start
36
36
  end
37
37
  end
38
38
 
39
39
  namespace :rabbitmq do
40
- desc I18n.t('orchestration.rabbitmq.wait')
40
+ desc I18n.t('orchestration.rake.rabbitmq.wait')
41
41
  task :wait do
42
42
  Orchestration::Services::RabbitMQ::Healthcheck.start
43
43
  end
44
44
  end
45
45
 
46
- namespace :docker do
47
- desc I18n.t('orchestration.rake.docker.username')
48
- task :username do
49
- STDOUT.write(
50
- Orchestration::Environment.new.settings.get('docker.username')
51
- )
52
- STDOUT.flush
53
- end
54
- end
55
-
56
46
  namespace :listener do
57
47
  desc I18n.t('orchestration.rake.listener.wait')
58
48
  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.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-21 00:00:00.000000000 Z
11
+ date: 2018-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -307,12 +307,13 @@ files:
307
307
  - lib/Rakefile
308
308
  - lib/orchestration.rb
309
309
  - lib/orchestration/docker_compose.rb
310
- - lib/orchestration/docker_compose/application_service.rb
310
+ - lib/orchestration/docker_compose/app_service.rb
311
+ - lib/orchestration/docker_compose/configuration.rb
311
312
  - lib/orchestration/docker_compose/database_service.rb
313
+ - lib/orchestration/docker_compose/install_generator.rb
312
314
  - lib/orchestration/docker_compose/mongo_service.rb
313
315
  - lib/orchestration/docker_compose/nginx_proxy_service.rb
314
316
  - lib/orchestration/docker_compose/rabbitmq_service.rb
315
- - lib/orchestration/docker_compose/services.rb
316
317
  - lib/orchestration/environment.rb
317
318
  - lib/orchestration/errors.rb
318
319
  - lib/orchestration/file_helpers.rb
@@ -320,9 +321,9 @@ files:
320
321
  - lib/orchestration/railtie.rb
321
322
  - lib/orchestration/service_check.rb
322
323
  - lib/orchestration/services.rb
323
- - lib/orchestration/services/application.rb
324
- - lib/orchestration/services/application/configuration.rb
325
- - lib/orchestration/services/application/healthcheck.rb
324
+ - lib/orchestration/services/app.rb
325
+ - lib/orchestration/services/app/configuration.rb
326
+ - lib/orchestration/services/app/healthcheck.rb
326
327
  - lib/orchestration/services/configuration_base.rb
327
328
  - lib/orchestration/services/database.rb
328
329
  - lib/orchestration/services/database/adapters.rb
@@ -347,7 +348,11 @@ files:
347
348
  - lib/orchestration/settings.rb
348
349
  - lib/orchestration/templates/Dockerfile.erb
349
350
  - lib/orchestration/templates/Makefile.erb
351
+ - lib/orchestration/templates/application.mk.erb
352
+ - lib/orchestration/templates/deploy.mk.erb
353
+ - lib/orchestration/templates/docker-compose.override.yml.erb
350
354
  - lib/orchestration/templates/entrypoint.sh.erb
355
+ - lib/orchestration/templates/env.erb
351
356
  - lib/orchestration/templates/nginx.tmpl.erb
352
357
  - lib/orchestration/templates/unicorn.rb.erb
353
358
  - lib/orchestration/templates/yaml.bash.erb
@@ -374,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
374
379
  version: '0'
375
380
  requirements: []
376
381
  rubyforge_project:
377
- rubygems_version: 2.5.2.2
382
+ rubygems_version: 2.7.6
378
383
  signing_key:
379
384
  specification_version: 4
380
385
  summary: Docker orchestration toolkit
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Orchestration
4
- module DockerCompose
5
- class Services
6
- def initialize(env, options = {})
7
- @env = env
8
- @configurations = {
9
- 'application' => options.fetch(:application, nil),
10
- 'database' => options.fetch(:database, nil),
11
- 'mongo' => options.fetch(:mongo, nil),
12
- 'rabbitmq' => options.fetch(:rabbitmq, nil),
13
- 'nginx-proxy' => options.fetch(:nginx_proxy, nil)
14
- }
15
- end
16
-
17
- def structure
18
- {
19
- 'version' => '3.7',
20
- 'services' => services,
21
- 'volumes' => {
22
- @env.public_volume => nil
23
- }
24
- }
25
- end
26
-
27
- def services
28
- Hash[filtered_services]
29
- end
30
-
31
- private
32
-
33
- def filtered_services
34
- services_enabled.compact.reject { |_name, definition| definition.nil? }
35
- end
36
-
37
- def services_available
38
- [
39
- { name: 'application', class: ApplicationService },
40
- { name: 'database', class: DatabaseService },
41
- { name: 'mongo', class: MongoService },
42
- { name: 'rabbitmq', class: RabbitMQService },
43
- { name: 'nginx-proxy', class: NginxProxyService }
44
- ]
45
- end
46
-
47
- def services_enabled
48
- services_available.map do |service|
49
- config = @configurations[service[:name]]
50
- # REVIEW: This is mostly here for testing - we may not need it once
51
- # everything's implemented.
52
- next if config.nil?
53
-
54
- [service[:name], service[:class].new(config).definition]
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Orchestration
4
- module Services
5
- module Application
6
- end
7
- end
8
- end
9
-
10
- require 'net/http'
11
-
12
- require 'orchestration/services/application/configuration'
13
- require 'orchestration/services/application/healthcheck'