harbr 0.2.10 → 2.8.1
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/.DS_Store +0 -0
- data/exe/harbr +225 -150
- data/lib/examples/container.toml +13 -0
- data/lib/harbr/container.rb +14 -10
- data/lib/harbr/host.rb +21 -0
- data/lib/harbr/version.rb +1 -1
- data/lib/harbr.rb +21 -6
- data/vendor/bundle/ruby/3.2.0/cache/dddr-1.0.8.gem +0 -0
- data/vendor/bundle/ruby/3.2.0/cache/dddr-1.1.0.gem +0 -0
- data/vendor/bundle/ruby/3.2.0/cache/dddr-1.1.1.gem +0 -0
- data/vendor/bundle/ruby/3.2.0/cache/net-ssh-7.2.1.gem +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.DS_Store +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.rspec +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.standard.yml +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/CHANGELOG.md +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/CODE_OF_CONDUCT.md +84 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/LICENSE.txt +21 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/README.md +96 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/Rakefile +10 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/hero.png +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/lib/dddr/version.rb +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/lib/dddr.rb +205 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/sig/dddr.rbs +4 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.DS_Store +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.rspec +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.standard.yml +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/CHANGELOG.md +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/CODE_OF_CONDUCT.md +84 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/LICENSE.txt +21 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/README.md +96 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/Rakefile +10 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/hero.png +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/lib/dddr/version.rb +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/lib/dddr.rb +182 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/sig/dddr.rbs +4 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.DS_Store +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.rspec +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.standard.yml +3 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/CHANGELOG.md +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/CODE_OF_CONDUCT.md +84 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/LICENSE.txt +21 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/README.md +96 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/Rakefile +10 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/hero.png +0 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/lib/dddr/version.rb +5 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/lib/dddr.rb +184 -0
- data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/sig/dddr.rbs +4 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.dockerignore +6 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/FUNDING.yml +1 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/config/rubocop_linter_action.yml +4 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/ci-with-docker.yml +44 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/ci.yml +94 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/rubocop.yml +16 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.gitignore +15 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.rubocop.yml +22 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.rubocop_todo.yml +1081 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/CHANGES.txt +738 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/DEVELOPMENT.md +23 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Dockerfile +29 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Dockerfile.openssl3 +17 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile +13 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile.noed25519 +12 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile.norbnacl +12 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/ISSUE_TEMPLATE.md +30 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/LICENSE.txt +19 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Manifest +132 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/README.md +298 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Rakefile +192 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/SECURITY.md +4 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/THANKS.txt +110 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/appveyor.yml +58 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/docker-compose.yml +25 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/agent.rb +284 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/certificate.rb +183 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/constants.rb +20 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/ed25519.rb +186 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/ed25519_loader.rb +31 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/key_manager.rb +327 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/abstract.rb +79 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/hostbased.rb +72 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/keyboard_interactive.rb +77 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/none.rb +34 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/password.rb +80 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/publickey.rb +137 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/pageant.rb +497 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/pub_key_fingerprint.rb +43 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/session.rb +172 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/buffer.rb +449 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/buffered_io.rb +202 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/config.rb +406 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/channel.rb +694 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/constants.rb +33 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/event_loop.rb +123 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/keepalive.rb +59 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/session.rb +712 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/term.rb +180 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/errors.rb +106 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/key_factory.rb +218 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/known_hosts.rb +265 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/loggable.rb +62 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/packet.rb +106 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/prompt.rb +62 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/command.rb +123 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/errors.rb +16 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/http.rb +98 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/https.rb +50 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/jump.rb +54 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/socks4.rb +67 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/socks5.rb +140 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/service/forward.rb +426 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/channel.rb +147 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/extensions.rb +173 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/kex.rb +46 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/local_packet.rb +53 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/packet.rb +101 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/remote_packet.rb +40 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/script.rb +180 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/socket.rb +65 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test.rb +94 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/algorithms.rb +524 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/chacha20_poly1305_cipher.rb +117 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/chacha20_poly1305_cipher_loader.rb +17 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/cipher_factory.rb +128 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/constants.rb +40 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/ctr.rb +115 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/abstract.rb +97 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/md5.rb +10 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/md5_96.rb +9 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/none.rb +13 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/ripemd160.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha1.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha1_96.rb +9 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256_96.rb +9 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256_etm.rb +12 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512_96.rb +9 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512_etm.rb +12 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac.rb +47 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/identity_cipher.rb +65 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/abstract.rb +130 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/abstract5656.rb +72 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/curve25519_sha256.rb +39 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/curve25519_sha256_loader.rb +30 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/diffie_hellman_group14_sha1.rb +37 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/diffie_hellman_group14_sha256.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +122 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +72 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha256.rb +11 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +39 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp384.rb +21 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp521.rb +21 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex.rb +31 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/key_expander.rb +30 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/openssl.rb +274 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/openssl_cipher_extensions.rb +8 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/packet_stream.rb +301 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/server_version.rb +77 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/session.rb +354 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/state.rb +208 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/accept_new.rb +33 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/accept_new_or_local_tunnel.rb +33 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/always.rb +58 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/never.rb +19 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/version.rb +68 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh.rb +338 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/net-ssh-public_cert.pem +20 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/net-ssh.gemspec +46 -0
- data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/support/ssh_tunnel_bug.rb +65 -0
- data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.0.8.gemspec +27 -0
- data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.1.0.gemspec +27 -0
- data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.1.1.gemspec +27 -0
- data/vendor/bundle/ruby/3.2.0/specifications/net-ssh-7.2.1.gemspec +38 -0
- metadata +174 -9
- data/config/manifest.yml +0 -5
- data/lib/harbr/job.rb +0 -252
- data/lib/harbr/lxd/job.rb +0 -119
- data/lib/harbr/lxd/setup.rb +0 -45
data/lib/harbr/job.rb
DELETED
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
module Harbr
|
|
2
|
-
class Job
|
|
3
|
-
include SuckerPunch::Job
|
|
4
|
-
|
|
5
|
-
def get_container_name(path)
|
|
6
|
-
File.basename(path)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def create_traefik_config(containers)
|
|
10
|
-
config = {
|
|
11
|
-
"http" => {
|
|
12
|
-
"routers" => {},
|
|
13
|
-
"services" => {}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
containers.each do |container|
|
|
18
|
-
container.ip = "127.0.0.1"
|
|
19
|
-
name = container.name.tr(".", "-")
|
|
20
|
-
|
|
21
|
-
router_key = "#{name}-router-secure"
|
|
22
|
-
config["http"]["routers"][router_key] = {
|
|
23
|
-
"rule" => "Host(`#{container.host_header}`)",
|
|
24
|
-
"service" => "#{name}-service",
|
|
25
|
-
"entryPoints" => ["https"],
|
|
26
|
-
"tls" => {
|
|
27
|
-
"certResolver" => "myresolver"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
config["http"]["services"]["#{name}-service"] = {
|
|
32
|
-
"loadBalancer" => {
|
|
33
|
-
"servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
File.write("/etc/traefik/providers/harbr.toml", TomlRB.dump(config))
|
|
39
|
-
puts "Traefik configuration written to /etc/traefik/providers/harbr.toml"
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def collate_containers(name, host, port, host_header_aliases = [])
|
|
43
|
-
containers = Harbr::Container::Repository.new
|
|
44
|
-
container = containers.find_by_header(host)
|
|
45
|
-
|
|
46
|
-
if container.nil?
|
|
47
|
-
container = Harbr::Container.new
|
|
48
|
-
container.name = name
|
|
49
|
-
container.host_header = host
|
|
50
|
-
container.ip = "127.0.0.1"
|
|
51
|
-
container.port = port
|
|
52
|
-
containers.create(container)
|
|
53
|
-
|
|
54
|
-
else
|
|
55
|
-
container.port = port
|
|
56
|
-
containers.update(container)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
if host_header_aliases
|
|
60
|
-
host_header_aliases.each do |host_header_alias|
|
|
61
|
-
container = Harbr::Container.new
|
|
62
|
-
container.name = "#{name} -> #{host_header_alias}"
|
|
63
|
-
container.host_header = host_header_alias
|
|
64
|
-
container.ip = "127.0.0.1"
|
|
65
|
-
container.port = port
|
|
66
|
-
containers.create(container) unless containers.find_by_header(host_header_alias)
|
|
67
|
-
|
|
68
|
-
if container.name.start_with?("live")
|
|
69
|
-
|
|
70
|
-
plain_name = host_header_alias.gsub("live.", "")
|
|
71
|
-
container = Harbr::Container.new
|
|
72
|
-
container.name = "#{name} -> #{plain_name}"
|
|
73
|
-
container.host_header = plain_name
|
|
74
|
-
container.ip = "127.0.0.1"
|
|
75
|
-
container.port = port
|
|
76
|
-
|
|
77
|
-
unless containers.find_by_header(container.host_header)
|
|
78
|
-
containers.create(container)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
containers.all
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def write_to_file(path, contents)
|
|
89
|
-
dirname = File.dirname(path)
|
|
90
|
-
FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
|
|
91
|
-
File.write(path, contents)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def load_manifest(name, version)
|
|
95
|
-
manifest_path = "/var/harbr/containers/#{name}/versions/#{version}/config/manifest.yml"
|
|
96
|
-
check_file_exists(manifest_path)
|
|
97
|
-
raise "Manifest not found at #{manifest_path}" unless File.exist?(manifest_path)
|
|
98
|
-
|
|
99
|
-
manifest_data = YAML.load_file(manifest_path)
|
|
100
|
-
OpenStruct.new(manifest_data)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def perform(name, version, env)
|
|
104
|
-
Harbr.notifiable(name, version, env) do
|
|
105
|
-
manifest = load_manifest(name, version)
|
|
106
|
-
port = `port assign #{env}.#{manifest.port}`.strip
|
|
107
|
-
process_container(name, version, port, env, manifest)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
private
|
|
112
|
-
|
|
113
|
-
def remove_dot_from_string(str)
|
|
114
|
-
str.sub(".", "")
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def check_file_exists(path)
|
|
118
|
-
sleep_times = [1, 3, 5, 8, 23]
|
|
119
|
-
begin
|
|
120
|
-
sleep_times.each do |time|
|
|
121
|
-
puts "checking #{path}...."
|
|
122
|
-
if File.exist?(path)
|
|
123
|
-
puts "found #{path}"
|
|
124
|
-
return
|
|
125
|
-
end
|
|
126
|
-
sleep(time)
|
|
127
|
-
end
|
|
128
|
-
raise "Directory not found: #{path}"
|
|
129
|
-
rescue => e
|
|
130
|
-
puts "Error: #{e.message}"
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def check_dir_exists(path)
|
|
135
|
-
sleep_times = [1, 3, 5, 8, 23]
|
|
136
|
-
begin
|
|
137
|
-
sleep_times.each do |time|
|
|
138
|
-
puts "checking #{path}...."
|
|
139
|
-
if Dir.exist?(path)
|
|
140
|
-
puts "found #{path}"
|
|
141
|
-
return
|
|
142
|
-
end
|
|
143
|
-
sleep(time)
|
|
144
|
-
end
|
|
145
|
-
raise "Directory not found: #{path}"
|
|
146
|
-
rescue => e
|
|
147
|
-
puts "Error: #{e.message}"
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def process_container(name, version, port, env, manifest)
|
|
152
|
-
version_path = "/var/harbr/containers/#{name}/versions/#{version}"
|
|
153
|
-
|
|
154
|
-
if env == "live"
|
|
155
|
-
`rm -f /var/harbr/containers/#{name}/live` if Dir.exist?("/var/harbr/containers/#{name}/live")
|
|
156
|
-
`ln -sf /var/harbr/containers/#{name}/versions/#{version} /var/harbr/containers/#{name}/live`
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
if env == "next"
|
|
160
|
-
`rm -f /var/harbr/containers/#{name}/next` if Dir.exist?("/var/harbr/containers/#{name}/next")
|
|
161
|
-
`ln -sf /var/harbr/containers/#{name}/versions/#{version} /var/harbr/containers/#{name}/next`
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
bundle_install_if_needed(version_path)
|
|
165
|
-
|
|
166
|
-
create_runit_scripts(name, port, env)
|
|
167
|
-
link_directories(name, version, env)
|
|
168
|
-
sync_live_data_if_next(name) if env == "next"
|
|
169
|
-
|
|
170
|
-
containers = collate_containers("#{env}.#{name}", "#{env}.#{manifest.host}", port, manifest.host_aliases&.map { |host| "#{env}.#{host}" })
|
|
171
|
-
|
|
172
|
-
create_traefik_config(containers)
|
|
173
|
-
|
|
174
|
-
system "sv restart #{env}.#{name}"
|
|
175
|
-
|
|
176
|
-
puts "harbr: #{version} of #{name} deployed to #{env} environment"
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def bundle_install_if_needed(path)
|
|
180
|
-
check_dir_exists(path)
|
|
181
|
-
|
|
182
|
-
Dir.chdir(path) do
|
|
183
|
-
if File.exist?("Gemfile")
|
|
184
|
-
`bundle config set --local path 'vendor/bundle'`
|
|
185
|
-
system "bundle install"
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def create_runit_scripts(name, port, env)
|
|
191
|
-
run_script = Runit::Script.new(name, port, env).run_script
|
|
192
|
-
finish_script = Runit::Script.new(name, port, env).finish_script
|
|
193
|
-
log_script = Runit::Script.new(name, port, env).log_script
|
|
194
|
-
|
|
195
|
-
write_to_file "/etc/sv/harbr/#{name}/#{env}/run", run_script
|
|
196
|
-
write_to_file "/etc/sv/harbr/#{name}/#{env}/log/run", log_script
|
|
197
|
-
#write_to_file "/etc/sv/harbr/#{name}/#{env}/finish", finish_script
|
|
198
|
-
`chmod +x /etc/sv/harbr/#{name}/#{env}/run`
|
|
199
|
-
#`chmod +x /etc/sv/harbr/#{name}/#{env}/finish`
|
|
200
|
-
`chmod +x /etc/sv/harbr/#{name}/#{env}/log/run`
|
|
201
|
-
`mkdir -p /var/log/harbr/#{name}/#{env}`
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
def link_directories(name, version, env)
|
|
205
|
-
`rm -f /etc/service/#{env}.#{name}`
|
|
206
|
-
`rm -f /var/harbr/containers/#{name}/#{env}`
|
|
207
|
-
`ln -sf /var/harbr/containers/#{name}/versions/#{version} /var/harbr/containers/#{name}/#{env}`
|
|
208
|
-
`ln -sf /etc/sv/harbr/#{name}/#{env} /etc/service/#{env}.#{name}`
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
def sync_live_data_if_next(name)
|
|
212
|
-
`rsync -av /var/dddr/#{name}/live /var/dddr/#{name}/next`
|
|
213
|
-
puts "sync live data to next"
|
|
214
|
-
end
|
|
215
|
-
end
|
|
216
|
-
|
|
217
|
-
module Runit
|
|
218
|
-
class Script
|
|
219
|
-
def initialize(container, port, env)
|
|
220
|
-
@container_name = container
|
|
221
|
-
@port = port
|
|
222
|
-
@env = env
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
def run_script
|
|
226
|
-
<<~SCRIPT
|
|
227
|
-
#!/bin/sh
|
|
228
|
-
exec 2>&1
|
|
229
|
-
cd /var/harbr/containers/#{@container_name}/#{@env}
|
|
230
|
-
exec ./exe/run #{@port} #{@env}
|
|
231
|
-
echo "started #{@container_name} on port #{@port}"
|
|
232
|
-
SCRIPT
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
# def finish_script
|
|
236
|
-
# <<~SCRIPT
|
|
237
|
-
# #!/bin/sh
|
|
238
|
-
# lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill
|
|
239
|
-
# echo "killed #{@container_name} on port #{@port}"
|
|
240
|
-
# SCRIPT
|
|
241
|
-
# end
|
|
242
|
-
|
|
243
|
-
def log_script
|
|
244
|
-
<<~SCRIPT
|
|
245
|
-
#!/bin/sh
|
|
246
|
-
echo "starting log for #{@container_name} on port #{@port}"
|
|
247
|
-
exec svlogd -tt /var/log/harbr/#{@container_name}/#{@env}
|
|
248
|
-
SCRIPT
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
end
|
data/lib/harbr/lxd/job.rb
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
require "fileutils"
|
|
2
|
-
|
|
3
|
-
module Harbr
|
|
4
|
-
module Runit
|
|
5
|
-
class Script
|
|
6
|
-
def initialize(container, port, env)
|
|
7
|
-
@container_name = container
|
|
8
|
-
@port = port
|
|
9
|
-
@env = env
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def run_script
|
|
13
|
-
<<~SCRIPT
|
|
14
|
-
#!/bin/sh
|
|
15
|
-
exec 2>&1
|
|
16
|
-
cd /var/harbr/containers/#{@container_name}/#{@env}
|
|
17
|
-
exec ./exe/run #{@port} #{@env}
|
|
18
|
-
echo "started #{@container_name} on port #{@port}"
|
|
19
|
-
SCRIPT
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def finish_script
|
|
23
|
-
<<~SCRIPT
|
|
24
|
-
#!/bin/sh
|
|
25
|
-
lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill
|
|
26
|
-
echo "killed #{@container_name} on port #{@port}"
|
|
27
|
-
SCRIPT
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def log_script
|
|
31
|
-
<<~SCRIPT
|
|
32
|
-
#!/bin/sh
|
|
33
|
-
echo "starting log for #{@container_name} on port #{@port}"
|
|
34
|
-
exec svlogd -tt /var/log/harbr/#{@container_name}/#{@env}
|
|
35
|
-
SCRIPT
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
module Lxd
|
|
40
|
-
class Job
|
|
41
|
-
include SuckerPunch::Job
|
|
42
|
-
|
|
43
|
-
def perform(name, version, env, port)
|
|
44
|
-
ip_address = lxd_pack(name, env, port)
|
|
45
|
-
puts "Container IP Address: #{ip_address}"
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
private
|
|
49
|
-
|
|
50
|
-
def lxd_pack(name, env, port)
|
|
51
|
-
base_path = "/var/harbr/containers/paiddm"
|
|
52
|
-
source_path = File.join(base_path, env)
|
|
53
|
-
runit_script = Runit::Script.new(name, port, env)
|
|
54
|
-
|
|
55
|
-
# Check if the source path exists
|
|
56
|
-
raise "Source path #{source_path} does not exist." unless File.directory?(source_path)
|
|
57
|
-
|
|
58
|
-
# Create the container
|
|
59
|
-
system("lxc launch panamax #{name}")
|
|
60
|
-
sleep(5) # Wait for the container to initialize
|
|
61
|
-
|
|
62
|
-
# Check if runit is installed, if not then install
|
|
63
|
-
unless system("lxc exec #{name} -- dpkg -s runit")
|
|
64
|
-
system("lxc exec #{name} -- apt-get update")
|
|
65
|
-
system("lxc exec #{name} -- apt-get install -y runit")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Check if chruby is installed, if not then install chruby, ruby-install and Ruby versions
|
|
69
|
-
unless system("lxc exec #{name} -- bash -c 'type chruby'")
|
|
70
|
-
system("lxc exec #{name} -- apt-get install -y git curl build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libgdbm-dev libncurses5-dev libffi-dev")
|
|
71
|
-
system("lxc exec #{name} -- wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz")
|
|
72
|
-
system("lxc exec #{name} -- tar -xzvf chruby-0.3.9.tar.gz")
|
|
73
|
-
system("lxc exec #{name} -- cd chruby-0.3.9/ && make install")
|
|
74
|
-
system("lxc exec #{name} -- echo 'source /usr/local/share/chruby/chruby.sh' >> ~/.bashrc")
|
|
75
|
-
system("lxc exec #{name} -- wget -O ruby-install-0.8.3.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.3.tar.gz")
|
|
76
|
-
system("lxc exec #{name} -- tar -xzvf ruby-install-0.8.3.tar.gz")
|
|
77
|
-
system("lxc exec #{name} -- cd ruby-install-0.8.3/ && make install")
|
|
78
|
-
|
|
79
|
-
# Install Ruby versions
|
|
80
|
-
["3.2.2", "3.1.2", "3.3.0"].each do |ruby_version|
|
|
81
|
-
system("lxc exec #{name} -- ruby-install ruby #{ruby_version}")
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
# Copy the entire directory structure to the container
|
|
85
|
-
system("lxc file push -r #{source_path}/* #{name}/var/harbr/containers/#{name}/")
|
|
86
|
-
|
|
87
|
-
# Start the container, if it's not already running
|
|
88
|
-
system("lxc start #{name}")
|
|
89
|
-
sleep(5) # Wait for the container to fully start
|
|
90
|
-
|
|
91
|
-
# Create Runit scripts and directories
|
|
92
|
-
sv_path = "/etc/sv/#{name}"
|
|
93
|
-
system("lxc exec #{name} -- mkdir -p #{sv_path}")
|
|
94
|
-
system("lxc exec #{name} -- mkdir -p /var/log/harbr/#{name}/#{env}")
|
|
95
|
-
|
|
96
|
-
# Create and set execute permissions on each script
|
|
97
|
-
["run_script", "finish_script", "log_script"].each do |script_method|
|
|
98
|
-
script_content = runit_script.send(script_method)
|
|
99
|
-
File.write("tmp_script.sh", script_content)
|
|
100
|
-
system("lxc file push tmp_script.sh #{name}#{sv_path}/#{script_method.gsub("_script", "")}")
|
|
101
|
-
system("lxc exec #{name} -- chmod +x #{sv_path}/#{script_method.gsub("_script", "")}")
|
|
102
|
-
File.delete("tmp_script.sh")
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# Symlink from source to /etc/sv
|
|
106
|
-
system("lxc exec #{name} -- ln -s #{source_path} /etc/sv/#{name}")
|
|
107
|
-
|
|
108
|
-
# Symlink from sv to /etc/service
|
|
109
|
-
system("lxc exec #{name} -- ln -s #{sv_path} /etc/service/#{name}")
|
|
110
|
-
|
|
111
|
-
# Fetch the container's IP address
|
|
112
|
-
ip_address = `lxc list #{name} -c 4 --format csv`.strip
|
|
113
|
-
|
|
114
|
-
puts "Container #{name} created on #{ip_address}, Runit scripts set up, and started."
|
|
115
|
-
ip_address
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
data/lib/harbr/lxd/setup.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module Harbr
|
|
2
|
-
module Lxd
|
|
3
|
-
class Setup
|
|
4
|
-
include SuckerPunch::Job
|
|
5
|
-
|
|
6
|
-
def perform(name)
|
|
7
|
-
# Create the container
|
|
8
|
-
system("lxc launch ubuntu:20.04 #{name}")
|
|
9
|
-
sleep(5) # Wait for the container to initialize
|
|
10
|
-
|
|
11
|
-
# Check if runit is installed, if not then install
|
|
12
|
-
unless system("lxc exec #{name} -- dpkg -s runit")
|
|
13
|
-
system("lxc exec #{name} -- apt-get update")
|
|
14
|
-
system("lxc exec #{name} -- apt-get install -y runit")
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Check if chruby is installed, if not then install chruby, ruby-install and Ruby versions
|
|
18
|
-
unless system("lxc exec #{name} -- bash -c 'type chruby'")
|
|
19
|
-
system("lxc exec #{name} -- apt-get install -y git curl build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libgdbm-dev libncurses5-dev libffi-dev")
|
|
20
|
-
system("lxc exec #{name} -- wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz")
|
|
21
|
-
system("lxc exec #{name} -- tar -xzvf chruby-0.3.9.tar.gz")
|
|
22
|
-
system("lxc exec #{name} -- cd chruby-0.3.9/ && make install")
|
|
23
|
-
system("lxc exec #{name} -- echo 'source /usr/local/share/chruby/chruby.sh' >> ~/.bashrc")
|
|
24
|
-
system("lxc exec #{name} -- wget -O ruby-install-0.8.3.tar.gz https://github.com/postmodern/ruby-install/archive/v0.8.3.tar.gz")
|
|
25
|
-
system("lxc exec #{name} -- tar -xzvf ruby-install-0.8.3.tar.gz")
|
|
26
|
-
system("lxc exec #{name} -- cd ruby-install-0.8.3/ && make install")
|
|
27
|
-
|
|
28
|
-
# Install Ruby versions
|
|
29
|
-
["3.2.2", "3.1.2", "3.3.0"].each do |ruby_version|
|
|
30
|
-
system("lxc exec #{name} -- ruby-install ruby #{ruby_version}")
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
puts "Container #{name} created."
|
|
35
|
-
|
|
36
|
-
# Publish the container as an image named "panamax"
|
|
37
|
-
system("lxc stop #{name}")
|
|
38
|
-
system("lxc publish #{name} --alias @#{name}")
|
|
39
|
-
|
|
40
|
-
puts "panamax image #{name} published."
|
|
41
|
-
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|