harbr 0.2.10 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/exe/harbr +225 -150
  4. data/lib/examples/container.toml +13 -0
  5. data/lib/harbr/container.rb +14 -10
  6. data/lib/harbr/host.rb +21 -0
  7. data/lib/harbr/version.rb +1 -1
  8. data/lib/harbr.rb +21 -6
  9. data/vendor/bundle/ruby/3.2.0/cache/dddr-1.0.8.gem +0 -0
  10. data/vendor/bundle/ruby/3.2.0/cache/dddr-1.1.0.gem +0 -0
  11. data/vendor/bundle/ruby/3.2.0/cache/dddr-1.1.1.gem +0 -0
  12. data/vendor/bundle/ruby/3.2.0/cache/net-ssh-7.2.1.gem +0 -0
  13. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.DS_Store +0 -0
  14. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.rspec +3 -0
  15. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/.standard.yml +3 -0
  16. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/CHANGELOG.md +5 -0
  17. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/CODE_OF_CONDUCT.md +84 -0
  18. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/LICENSE.txt +21 -0
  19. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/README.md +96 -0
  20. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/Rakefile +10 -0
  21. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/hero.png +0 -0
  22. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/lib/dddr/version.rb +5 -0
  23. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/lib/dddr.rb +205 -0
  24. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.0.8/sig/dddr.rbs +4 -0
  25. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.DS_Store +0 -0
  26. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.rspec +3 -0
  27. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/.standard.yml +3 -0
  28. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/CHANGELOG.md +5 -0
  29. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/CODE_OF_CONDUCT.md +84 -0
  30. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/LICENSE.txt +21 -0
  31. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/README.md +96 -0
  32. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/Rakefile +10 -0
  33. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/hero.png +0 -0
  34. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/lib/dddr/version.rb +5 -0
  35. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/lib/dddr.rb +182 -0
  36. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.0/sig/dddr.rbs +4 -0
  37. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.DS_Store +0 -0
  38. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.rspec +3 -0
  39. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/.standard.yml +3 -0
  40. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/CHANGELOG.md +5 -0
  41. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/CODE_OF_CONDUCT.md +84 -0
  42. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/LICENSE.txt +21 -0
  43. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/README.md +96 -0
  44. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/Rakefile +10 -0
  45. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/hero.png +0 -0
  46. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/lib/dddr/version.rb +5 -0
  47. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/lib/dddr.rb +184 -0
  48. data/vendor/bundle/ruby/3.2.0/gems/dddr-1.1.1/sig/dddr.rbs +4 -0
  49. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.dockerignore +6 -0
  50. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/FUNDING.yml +1 -0
  51. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/config/rubocop_linter_action.yml +4 -0
  52. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/ci-with-docker.yml +44 -0
  53. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/ci.yml +94 -0
  54. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.github/workflows/rubocop.yml +16 -0
  55. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.gitignore +15 -0
  56. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.rubocop.yml +22 -0
  57. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/.rubocop_todo.yml +1081 -0
  58. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/CHANGES.txt +738 -0
  59. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/DEVELOPMENT.md +23 -0
  60. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Dockerfile +29 -0
  61. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Dockerfile.openssl3 +17 -0
  62. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile +13 -0
  63. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile.noed25519 +12 -0
  64. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Gemfile.norbnacl +12 -0
  65. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/ISSUE_TEMPLATE.md +30 -0
  66. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/LICENSE.txt +19 -0
  67. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Manifest +132 -0
  68. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/README.md +298 -0
  69. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/Rakefile +192 -0
  70. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/SECURITY.md +4 -0
  71. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/THANKS.txt +110 -0
  72. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/appveyor.yml +58 -0
  73. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/docker-compose.yml +25 -0
  74. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/agent.rb +284 -0
  75. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/certificate.rb +183 -0
  76. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/constants.rb +20 -0
  77. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/ed25519.rb +186 -0
  78. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/ed25519_loader.rb +31 -0
  79. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/key_manager.rb +327 -0
  80. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/abstract.rb +79 -0
  81. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/hostbased.rb +72 -0
  82. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/keyboard_interactive.rb +77 -0
  83. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/none.rb +34 -0
  84. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/password.rb +80 -0
  85. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/methods/publickey.rb +137 -0
  86. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/pageant.rb +497 -0
  87. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/pub_key_fingerprint.rb +43 -0
  88. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/authentication/session.rb +172 -0
  89. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/buffer.rb +449 -0
  90. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/buffered_io.rb +202 -0
  91. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/config.rb +406 -0
  92. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/channel.rb +694 -0
  93. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/constants.rb +33 -0
  94. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/event_loop.rb +123 -0
  95. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/keepalive.rb +59 -0
  96. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/session.rb +712 -0
  97. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/connection/term.rb +180 -0
  98. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/errors.rb +106 -0
  99. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/key_factory.rb +218 -0
  100. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/known_hosts.rb +265 -0
  101. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/loggable.rb +62 -0
  102. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/packet.rb +106 -0
  103. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/prompt.rb +62 -0
  104. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/command.rb +123 -0
  105. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/errors.rb +16 -0
  106. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/http.rb +98 -0
  107. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/https.rb +50 -0
  108. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/jump.rb +54 -0
  109. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/socks4.rb +67 -0
  110. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/proxy/socks5.rb +140 -0
  111. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/service/forward.rb +426 -0
  112. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/channel.rb +147 -0
  113. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/extensions.rb +173 -0
  114. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/kex.rb +46 -0
  115. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/local_packet.rb +53 -0
  116. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/packet.rb +101 -0
  117. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/remote_packet.rb +40 -0
  118. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/script.rb +180 -0
  119. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test/socket.rb +65 -0
  120. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/test.rb +94 -0
  121. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/algorithms.rb +524 -0
  122. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/chacha20_poly1305_cipher.rb +117 -0
  123. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/chacha20_poly1305_cipher_loader.rb +17 -0
  124. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/cipher_factory.rb +128 -0
  125. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/constants.rb +40 -0
  126. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/ctr.rb +115 -0
  127. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/abstract.rb +97 -0
  128. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/md5.rb +10 -0
  129. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/md5_96.rb +9 -0
  130. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/none.rb +13 -0
  131. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/ripemd160.rb +11 -0
  132. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha1.rb +11 -0
  133. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha1_96.rb +9 -0
  134. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256.rb +11 -0
  135. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256_96.rb +9 -0
  136. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_256_etm.rb +12 -0
  137. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512.rb +11 -0
  138. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512_96.rb +9 -0
  139. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac/sha2_512_etm.rb +12 -0
  140. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/hmac.rb +47 -0
  141. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/identity_cipher.rb +65 -0
  142. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/abstract.rb +130 -0
  143. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/abstract5656.rb +72 -0
  144. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/curve25519_sha256.rb +39 -0
  145. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/curve25519_sha256_loader.rb +30 -0
  146. 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
  147. 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
  148. 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
  149. 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
  150. 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
  151. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +39 -0
  152. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp384.rb +21 -0
  153. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex/ecdh_sha2_nistp521.rb +21 -0
  154. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/kex.rb +31 -0
  155. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/key_expander.rb +30 -0
  156. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/openssl.rb +274 -0
  157. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/openssl_cipher_extensions.rb +8 -0
  158. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/packet_stream.rb +301 -0
  159. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/server_version.rb +77 -0
  160. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/session.rb +354 -0
  161. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/transport/state.rb +208 -0
  162. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/accept_new.rb +33 -0
  163. 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
  164. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/always.rb +58 -0
  165. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/verifiers/never.rb +19 -0
  166. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh/version.rb +68 -0
  167. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/lib/net/ssh.rb +338 -0
  168. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/net-ssh-public_cert.pem +20 -0
  169. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/net-ssh.gemspec +46 -0
  170. data/vendor/bundle/ruby/3.2.0/gems/net-ssh-7.2.1/support/ssh_tunnel_bug.rb +65 -0
  171. data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.0.8.gemspec +27 -0
  172. data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.1.0.gemspec +27 -0
  173. data/vendor/bundle/ruby/3.2.0/specifications/dddr-1.1.1.gemspec +27 -0
  174. data/vendor/bundle/ruby/3.2.0/specifications/net-ssh-7.2.1.gemspec +38 -0
  175. metadata +174 -9
  176. data/config/manifest.yml +0 -5
  177. data/lib/harbr/job.rb +0 -252
  178. data/lib/harbr/lxd/job.rb +0 -119
  179. 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
@@ -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