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 +4 -4
- data/exe/harbr +2 -1
- data/lib/examples/template.toml +15 -0
- data/lib/harbr/version.rb +1 -1
- data/lib/harbr.rb +36 -2
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a300cf909bcba9f3fc2045d7054d35d5752dc401d31b69e5f13eabecdf892ca
|
4
|
+
data.tar.gz: 17bad3c9f4a400ce18aada4915fd0777728b4357c05290271494f3fdb71dc7a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
-
|
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
|
-
|
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.
|
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
|