harbr 0.0.26 → 0.0.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5eb9a36d658e6c4715dc48f90ffa37d0071fa6d7ab428bc75d65265682967781
4
- data.tar.gz: 0aee4e5465e2b316d1b7f59a208fca76cd7371f4bdad5c556af1cc3e8fc05b70
3
+ metadata.gz: 7a300cf909bcba9f3fc2045d7054d35d5752dc401d31b69e5f13eabecdf892ca
4
+ data.tar.gz: 17bad3c9f4a400ce18aada4915fd0777728b4357c05290271494f3fdb71dc7a0
5
5
  SHA512:
6
- metadata.gz: 9fd1075768db252ca5bc6709bf3a381cff6318f0ddc2154d2bfae56215932f0c13addfd264897571d0d066658c67b2761cf2054402b0a883171835a1f6c4e54c
7
- data.tar.gz: f984d372db4321ed1ccdf1f96579eecda24e47a4df24470ae7bc3005ca656055bea943ee1a234263553ea7a932d63e738ff1ba26dc4de5772120b6af27258e6f
6
+ metadata.gz: 90db528f026396ec5dfee0e8c5a4909d30898efe8ec7832fbdcb07918ba676a48879d087d745bcbc2efdc60d925a25ef5befbebc873fd340d2d281afff91aefd
7
+ data.tar.gz: 66898f08948196327f89b5fdcc082772979a58f075d4baaca22c2f9612b80efc7ec31a89689cfcadedc8104bdcaba9698531fc9c8b1d4e5ffaa719d76c000eef
data/exe/harbr CHANGED
@@ -5,6 +5,8 @@ require "harbr"
5
5
  require "sucker_punch"
6
6
  require "terminal-table"
7
7
  require "yaml"
8
+ require 'toml-rb'
9
+ require "fileutils"
8
10
  require "ostruct"
9
11
 
10
12
  class HarbrCLI < Thor
@@ -15,7 +17,6 @@ class HarbrCLI < Thor
15
17
  end
16
18
 
17
19
  no_commands do
18
-
19
20
  def load_manifest(container, version)
20
21
  manifest_path = "/var/harbr/#{container}/versions/#{version}/config/manifest.yml"
21
22
  if File.exist?(manifest_path)
@@ -0,0 +1,15 @@
1
+ # Define HTTP routers
2
+ [http.routers]
3
+ [http.routers.traefik-dashboard]
4
+ rule = "Host(`traefik.harbr.zero2one.ee`)"
5
+ service = "api@internal"
6
+
7
+ [http.routers.sild-router]
8
+ rule = "Host(`sild.harbr.zero2one.ee`)"
9
+ service = "sild-service"
10
+
11
+ [http.services]
12
+ [http.services.tallinn-service]
13
+ [http.services.tallinn-service.loadBalancer]
14
+ [[http.services.tallinn-service.loadBalancer.servers]]
15
+ url = "http://127.0.0.1:80"
data/lib/harbr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harbr
4
- VERSION = "0.0.26"
4
+ VERSION = "0.0.27"
5
5
  end
data/lib/harbr.rb CHANGED
@@ -3,7 +3,8 @@
3
3
  require_relative "harbr/version"
4
4
  require "dddr"
5
5
  require "sucker_punch"
6
- require "fileutils"
6
+
7
+ require 'toml-rb'
7
8
 
8
9
  module Harbr
9
10
 
@@ -27,6 +28,38 @@ module Harbr
27
28
  end
28
29
 
29
30
 
31
+ def create_traefik_config(containers)
32
+ config = {
33
+ "http" => {
34
+ "routers" => {
35
+ "traefik-dashboard" => {
36
+ "rule" => "Host(`traefik.harbr.zero2one.ee`)",
37
+ "service" => "api@internal"
38
+ }
39
+ },
40
+ "services" => {}
41
+ }
42
+ }
43
+
44
+ containers.each do |container|
45
+
46
+ container.ip = "127.0.0.1"
47
+
48
+ config["http"]["routers"]["#{container.name}-router"] = {
49
+ "rule" => "Host(`#{container.host_header}`)",
50
+ "service" => "#{container.name}-service"
51
+ }
52
+ config["http"]["services"]["#{container.name}-service"] = {
53
+ "loadBalancer" => {
54
+ "servers" => [{ "url" => "http://#{container.ip}:#{container.port}" }]
55
+ }
56
+ }
57
+ end
58
+
59
+ File.write('/etc/traefik/harbr.toml', TomlRB.dump(config))
60
+ puts "Traefik configuration written to /etc/traefik/harbr.toml"
61
+ end
62
+
30
63
  def create_run_script(container_name, port)
31
64
  service_dir = "/etc/sv/harbr/#{container_name}"
32
65
  if File.directory?(service_dir)
@@ -109,7 +142,8 @@ module Harbr
109
142
  container.port = port.number
110
143
  containers.add(container) unless containers.find_by_header(manifest.host)
111
144
 
112
- puts "Started container: #{manifest.name}"
145
+ create_traefik_config(containers.all)
146
+
113
147
 
114
148
  end
115
149
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.26
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: toml-rb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.2.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.2.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: dddr
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +116,7 @@ files:
102
116
  - exe/harbr
103
117
  - hero.png
104
118
  - lib/examples/harbr.toml
119
+ - lib/examples/template.toml
105
120
  - lib/harbr.rb
106
121
  - lib/harbr/version.rb
107
122
  - sig/harbr.rbs