nvoi 0.1.5

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.
Files changed (178) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +19 -0
  3. data/Gemfile +9 -0
  4. data/Gemfile.lock +151 -0
  5. data/Makefile +26 -0
  6. data/Rakefile +16 -0
  7. data/doc/config-schema.yaml +357 -0
  8. data/examples/apex-wildcard/deploy.yml +68 -0
  9. data/examples/golang/.gitignore +19 -0
  10. data/examples/golang/Dockerfile +43 -0
  11. data/examples/golang/README.md +59 -0
  12. data/examples/golang/deploy.enc +0 -0
  13. data/examples/golang/deploy.yml +54 -0
  14. data/examples/golang/go.mod +39 -0
  15. data/examples/golang/go.sum +96 -0
  16. data/examples/golang/main.go +177 -0
  17. data/examples/golang/models/user.go +17 -0
  18. data/examples/golang-postgres-multi/.gitignore +18 -0
  19. data/examples/golang-postgres-multi/Dockerfile +39 -0
  20. data/examples/golang-postgres-multi/README.md +211 -0
  21. data/examples/golang-postgres-multi/deploy.yml +67 -0
  22. data/examples/golang-postgres-multi/go.mod +45 -0
  23. data/examples/golang-postgres-multi/go.sum +108 -0
  24. data/examples/golang-postgres-multi/main.go +197 -0
  25. data/examples/golang-postgres-multi/models/user.go +17 -0
  26. data/examples/postgres-multi/.env.production.example +11 -0
  27. data/examples/postgres-multi/README.md +112 -0
  28. data/examples/postgres-multi/deploy.yml +74 -0
  29. data/examples/postgres-single/.env.production.example +11 -0
  30. data/examples/postgres-single/.gitignore +15 -0
  31. data/examples/postgres-single/Dockerfile +35 -0
  32. data/examples/postgres-single/README.md +76 -0
  33. data/examples/postgres-single/deploy.yml +56 -0
  34. data/examples/postgres-single/go.mod +45 -0
  35. data/examples/postgres-single/go.sum +108 -0
  36. data/examples/postgres-single/main.go +184 -0
  37. data/examples/rails-single/.dockerignore +51 -0
  38. data/examples/rails-single/.env.production.example +11 -0
  39. data/examples/rails-single/.github/dependabot.yml +12 -0
  40. data/examples/rails-single/.github/workflows/ci.yml +39 -0
  41. data/examples/rails-single/.gitignore +20 -0
  42. data/examples/rails-single/.node-version +1 -0
  43. data/examples/rails-single/.rubocop.yml +8 -0
  44. data/examples/rails-single/.ruby-version +1 -0
  45. data/examples/rails-single/Dockerfile +86 -0
  46. data/examples/rails-single/Gemfile +56 -0
  47. data/examples/rails-single/Gemfile.lock +350 -0
  48. data/examples/rails-single/Procfile.dev +3 -0
  49. data/examples/rails-single/README.md +17 -0
  50. data/examples/rails-single/Rakefile +6 -0
  51. data/examples/rails-single/app/assets/builds/.keep +0 -0
  52. data/examples/rails-single/app/assets/images/.keep +0 -0
  53. data/examples/rails-single/app/assets/stylesheets/application.tailwind.css +1 -0
  54. data/examples/rails-single/app/controllers/application_controller.rb +4 -0
  55. data/examples/rails-single/app/controllers/concerns/.keep +0 -0
  56. data/examples/rails-single/app/controllers/users_controller.rb +19 -0
  57. data/examples/rails-single/app/helpers/application_helper.rb +2 -0
  58. data/examples/rails-single/app/javascript/application.js +3 -0
  59. data/examples/rails-single/app/javascript/controllers/application.js +9 -0
  60. data/examples/rails-single/app/javascript/controllers/hello_controller.js +7 -0
  61. data/examples/rails-single/app/javascript/controllers/index.js +8 -0
  62. data/examples/rails-single/app/jobs/application_job.rb +7 -0
  63. data/examples/rails-single/app/mailers/application_mailer.rb +4 -0
  64. data/examples/rails-single/app/models/application_record.rb +3 -0
  65. data/examples/rails-single/app/models/concerns/.keep +0 -0
  66. data/examples/rails-single/app/models/user.rb +2 -0
  67. data/examples/rails-single/app/views/layouts/application.html.erb +28 -0
  68. data/examples/rails-single/app/views/layouts/mailer.html.erb +13 -0
  69. data/examples/rails-single/app/views/layouts/mailer.text.erb +1 -0
  70. data/examples/rails-single/app/views/pwa/manifest.json.erb +22 -0
  71. data/examples/rails-single/app/views/pwa/service-worker.js +26 -0
  72. data/examples/rails-single/app/views/users/index.html.erb +38 -0
  73. data/examples/rails-single/bin/brakeman +7 -0
  74. data/examples/rails-single/bin/bundle +109 -0
  75. data/examples/rails-single/bin/dev +11 -0
  76. data/examples/rails-single/bin/docker-entrypoint +14 -0
  77. data/examples/rails-single/bin/jobs +6 -0
  78. data/examples/rails-single/bin/kamal +27 -0
  79. data/examples/rails-single/bin/rails +4 -0
  80. data/examples/rails-single/bin/rake +4 -0
  81. data/examples/rails-single/bin/rubocop +8 -0
  82. data/examples/rails-single/bin/setup +37 -0
  83. data/examples/rails-single/bin/thrust +5 -0
  84. data/examples/rails-single/bun.lock +224 -0
  85. data/examples/rails-single/config/application.rb +42 -0
  86. data/examples/rails-single/config/boot.rb +4 -0
  87. data/examples/rails-single/config/cable.yml +17 -0
  88. data/examples/rails-single/config/cache.yml +16 -0
  89. data/examples/rails-single/config/credentials.yml.enc +1 -0
  90. data/examples/rails-single/config/database.yml +100 -0
  91. data/examples/rails-single/config/environment.rb +5 -0
  92. data/examples/rails-single/config/environments/development.rb +69 -0
  93. data/examples/rails-single/config/environments/production.rb +87 -0
  94. data/examples/rails-single/config/environments/test.rb +50 -0
  95. data/examples/rails-single/config/initializers/assets.rb +7 -0
  96. data/examples/rails-single/config/initializers/content_security_policy.rb +25 -0
  97. data/examples/rails-single/config/initializers/filter_parameter_logging.rb +8 -0
  98. data/examples/rails-single/config/initializers/inflections.rb +16 -0
  99. data/examples/rails-single/config/locales/en.yml +31 -0
  100. data/examples/rails-single/config/puma.rb +41 -0
  101. data/examples/rails-single/config/queue.yml +18 -0
  102. data/examples/rails-single/config/recurring.yml +15 -0
  103. data/examples/rails-single/config/routes.rb +4 -0
  104. data/examples/rails-single/config.ru +6 -0
  105. data/examples/rails-single/db/cable_schema.rb +11 -0
  106. data/examples/rails-single/db/cache_schema.rb +12 -0
  107. data/examples/rails-single/db/migrate/20251123095526_create_users.rb +10 -0
  108. data/examples/rails-single/db/queue_schema.rb +129 -0
  109. data/examples/rails-single/db/seeds.rb +9 -0
  110. data/examples/rails-single/deploy.yml +57 -0
  111. data/examples/rails-single/lib/tasks/.keep +0 -0
  112. data/examples/rails-single/log/.keep +0 -0
  113. data/examples/rails-single/package.json +17 -0
  114. data/examples/rails-single/public/400.html +114 -0
  115. data/examples/rails-single/public/404.html +114 -0
  116. data/examples/rails-single/public/406-unsupported-browser.html +114 -0
  117. data/examples/rails-single/public/422.html +114 -0
  118. data/examples/rails-single/public/500.html +114 -0
  119. data/examples/rails-single/public/icon.png +0 -0
  120. data/examples/rails-single/public/icon.svg +3 -0
  121. data/examples/rails-single/public/robots.txt +1 -0
  122. data/examples/rails-single/script/.keep +0 -0
  123. data/examples/rails-single/vendor/.keep +0 -0
  124. data/examples/rails-single/yarn.lock +188 -0
  125. data/exe/nvoi +6 -0
  126. data/lib/nvoi/cli.rb +190 -0
  127. data/lib/nvoi/cloudflare/client.rb +287 -0
  128. data/lib/nvoi/config/config.rb +248 -0
  129. data/lib/nvoi/config/env_resolver.rb +63 -0
  130. data/lib/nvoi/config/loader.rb +102 -0
  131. data/lib/nvoi/config/naming.rb +196 -0
  132. data/lib/nvoi/config/ssh_keys.rb +82 -0
  133. data/lib/nvoi/config/types.rb +274 -0
  134. data/lib/nvoi/constants.rb +59 -0
  135. data/lib/nvoi/credentials/crypto.rb +88 -0
  136. data/lib/nvoi/credentials/editor.rb +272 -0
  137. data/lib/nvoi/credentials/manager.rb +173 -0
  138. data/lib/nvoi/deployer/cleaner.rb +36 -0
  139. data/lib/nvoi/deployer/image_builder.rb +23 -0
  140. data/lib/nvoi/deployer/infrastructure.rb +126 -0
  141. data/lib/nvoi/deployer/orchestrator.rb +146 -0
  142. data/lib/nvoi/deployer/retry.rb +67 -0
  143. data/lib/nvoi/deployer/service_deployer.rb +311 -0
  144. data/lib/nvoi/deployer/tunnel_manager.rb +57 -0
  145. data/lib/nvoi/deployer/types.rb +8 -0
  146. data/lib/nvoi/errors.rb +67 -0
  147. data/lib/nvoi/k8s/renderer.rb +44 -0
  148. data/lib/nvoi/k8s/templates.rb +29 -0
  149. data/lib/nvoi/logger.rb +72 -0
  150. data/lib/nvoi/providers/aws.rb +403 -0
  151. data/lib/nvoi/providers/base.rb +111 -0
  152. data/lib/nvoi/providers/hetzner.rb +288 -0
  153. data/lib/nvoi/providers/hetzner_client.rb +170 -0
  154. data/lib/nvoi/remote/docker_manager.rb +203 -0
  155. data/lib/nvoi/remote/ssh_executor.rb +72 -0
  156. data/lib/nvoi/remote/volume_manager.rb +103 -0
  157. data/lib/nvoi/service/delete.rb +234 -0
  158. data/lib/nvoi/service/deploy.rb +80 -0
  159. data/lib/nvoi/service/exec.rb +144 -0
  160. data/lib/nvoi/service/provider.rb +36 -0
  161. data/lib/nvoi/steps/application_deployer.rb +26 -0
  162. data/lib/nvoi/steps/database_provisioner.rb +60 -0
  163. data/lib/nvoi/steps/k3s_cluster_setup.rb +105 -0
  164. data/lib/nvoi/steps/k3s_provisioner.rb +351 -0
  165. data/lib/nvoi/steps/server_provisioner.rb +43 -0
  166. data/lib/nvoi/steps/services_provisioner.rb +29 -0
  167. data/lib/nvoi/steps/tunnel_configurator.rb +66 -0
  168. data/lib/nvoi/steps/volume_provisioner.rb +154 -0
  169. data/lib/nvoi/version.rb +5 -0
  170. data/lib/nvoi.rb +79 -0
  171. data/templates/app-deployment.yaml.erb +102 -0
  172. data/templates/app-ingress.yaml.erb +20 -0
  173. data/templates/app-secret.yaml.erb +10 -0
  174. data/templates/app-service.yaml.erb +12 -0
  175. data/templates/db-statefulset.yaml.erb +76 -0
  176. data/templates/service-deployment.yaml.erb +91 -0
  177. data/templates/worker-deployment.yaml.erb +50 -0
  178. metadata +361 -0
metadata ADDED
@@ -0,0 +1,361 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nvoi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - NVOI
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-12-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: aws-sdk-ec2
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.400'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.400'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.7'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: net-ssh
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '7.2'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '7.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: net-scp
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '5.20'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '5.20'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.19'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.19'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.57'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.57'
153
+ description: A deployment tool that automates application deployment to cloud providers
154
+ (Hetzner, AWS) with K3s orchestration and Cloudflare tunnels.
155
+ email:
156
+ - support@nvoi.io
157
+ executables:
158
+ - nvoi
159
+ extensions: []
160
+ extra_rdoc_files: []
161
+ files:
162
+ - ".rubocop.yml"
163
+ - Gemfile
164
+ - Gemfile.lock
165
+ - Makefile
166
+ - Rakefile
167
+ - doc/config-schema.yaml
168
+ - examples/apex-wildcard/deploy.yml
169
+ - examples/golang-postgres-multi/.gitignore
170
+ - examples/golang-postgres-multi/Dockerfile
171
+ - examples/golang-postgres-multi/README.md
172
+ - examples/golang-postgres-multi/deploy.yml
173
+ - examples/golang-postgres-multi/go.mod
174
+ - examples/golang-postgres-multi/go.sum
175
+ - examples/golang-postgres-multi/main.go
176
+ - examples/golang-postgres-multi/models/user.go
177
+ - examples/golang/.gitignore
178
+ - examples/golang/Dockerfile
179
+ - examples/golang/README.md
180
+ - examples/golang/deploy.enc
181
+ - examples/golang/deploy.yml
182
+ - examples/golang/go.mod
183
+ - examples/golang/go.sum
184
+ - examples/golang/main.go
185
+ - examples/golang/models/user.go
186
+ - examples/postgres-multi/.env.production.example
187
+ - examples/postgres-multi/README.md
188
+ - examples/postgres-multi/deploy.yml
189
+ - examples/postgres-single/.env.production.example
190
+ - examples/postgres-single/.gitignore
191
+ - examples/postgres-single/Dockerfile
192
+ - examples/postgres-single/README.md
193
+ - examples/postgres-single/deploy.yml
194
+ - examples/postgres-single/go.mod
195
+ - examples/postgres-single/go.sum
196
+ - examples/postgres-single/main.go
197
+ - examples/rails-single/.dockerignore
198
+ - examples/rails-single/.env.production.example
199
+ - examples/rails-single/.github/dependabot.yml
200
+ - examples/rails-single/.github/workflows/ci.yml
201
+ - examples/rails-single/.gitignore
202
+ - examples/rails-single/.node-version
203
+ - examples/rails-single/.rubocop.yml
204
+ - examples/rails-single/.ruby-version
205
+ - examples/rails-single/Dockerfile
206
+ - examples/rails-single/Gemfile
207
+ - examples/rails-single/Gemfile.lock
208
+ - examples/rails-single/Procfile.dev
209
+ - examples/rails-single/README.md
210
+ - examples/rails-single/Rakefile
211
+ - examples/rails-single/app/assets/builds/.keep
212
+ - examples/rails-single/app/assets/images/.keep
213
+ - examples/rails-single/app/assets/stylesheets/application.tailwind.css
214
+ - examples/rails-single/app/controllers/application_controller.rb
215
+ - examples/rails-single/app/controllers/concerns/.keep
216
+ - examples/rails-single/app/controllers/users_controller.rb
217
+ - examples/rails-single/app/helpers/application_helper.rb
218
+ - examples/rails-single/app/javascript/application.js
219
+ - examples/rails-single/app/javascript/controllers/application.js
220
+ - examples/rails-single/app/javascript/controllers/hello_controller.js
221
+ - examples/rails-single/app/javascript/controllers/index.js
222
+ - examples/rails-single/app/jobs/application_job.rb
223
+ - examples/rails-single/app/mailers/application_mailer.rb
224
+ - examples/rails-single/app/models/application_record.rb
225
+ - examples/rails-single/app/models/concerns/.keep
226
+ - examples/rails-single/app/models/user.rb
227
+ - examples/rails-single/app/views/layouts/application.html.erb
228
+ - examples/rails-single/app/views/layouts/mailer.html.erb
229
+ - examples/rails-single/app/views/layouts/mailer.text.erb
230
+ - examples/rails-single/app/views/pwa/manifest.json.erb
231
+ - examples/rails-single/app/views/pwa/service-worker.js
232
+ - examples/rails-single/app/views/users/index.html.erb
233
+ - examples/rails-single/bin/brakeman
234
+ - examples/rails-single/bin/bundle
235
+ - examples/rails-single/bin/dev
236
+ - examples/rails-single/bin/docker-entrypoint
237
+ - examples/rails-single/bin/jobs
238
+ - examples/rails-single/bin/kamal
239
+ - examples/rails-single/bin/rails
240
+ - examples/rails-single/bin/rake
241
+ - examples/rails-single/bin/rubocop
242
+ - examples/rails-single/bin/setup
243
+ - examples/rails-single/bin/thrust
244
+ - examples/rails-single/bun.lock
245
+ - examples/rails-single/config.ru
246
+ - examples/rails-single/config/application.rb
247
+ - examples/rails-single/config/boot.rb
248
+ - examples/rails-single/config/cable.yml
249
+ - examples/rails-single/config/cache.yml
250
+ - examples/rails-single/config/credentials.yml.enc
251
+ - examples/rails-single/config/database.yml
252
+ - examples/rails-single/config/environment.rb
253
+ - examples/rails-single/config/environments/development.rb
254
+ - examples/rails-single/config/environments/production.rb
255
+ - examples/rails-single/config/environments/test.rb
256
+ - examples/rails-single/config/initializers/assets.rb
257
+ - examples/rails-single/config/initializers/content_security_policy.rb
258
+ - examples/rails-single/config/initializers/filter_parameter_logging.rb
259
+ - examples/rails-single/config/initializers/inflections.rb
260
+ - examples/rails-single/config/locales/en.yml
261
+ - examples/rails-single/config/puma.rb
262
+ - examples/rails-single/config/queue.yml
263
+ - examples/rails-single/config/recurring.yml
264
+ - examples/rails-single/config/routes.rb
265
+ - examples/rails-single/db/cable_schema.rb
266
+ - examples/rails-single/db/cache_schema.rb
267
+ - examples/rails-single/db/migrate/20251123095526_create_users.rb
268
+ - examples/rails-single/db/queue_schema.rb
269
+ - examples/rails-single/db/seeds.rb
270
+ - examples/rails-single/deploy.yml
271
+ - examples/rails-single/lib/tasks/.keep
272
+ - examples/rails-single/log/.keep
273
+ - examples/rails-single/package.json
274
+ - examples/rails-single/public/400.html
275
+ - examples/rails-single/public/404.html
276
+ - examples/rails-single/public/406-unsupported-browser.html
277
+ - examples/rails-single/public/422.html
278
+ - examples/rails-single/public/500.html
279
+ - examples/rails-single/public/icon.png
280
+ - examples/rails-single/public/icon.svg
281
+ - examples/rails-single/public/robots.txt
282
+ - examples/rails-single/script/.keep
283
+ - examples/rails-single/vendor/.keep
284
+ - examples/rails-single/yarn.lock
285
+ - exe/nvoi
286
+ - lib/nvoi.rb
287
+ - lib/nvoi/cli.rb
288
+ - lib/nvoi/cloudflare/client.rb
289
+ - lib/nvoi/config/config.rb
290
+ - lib/nvoi/config/env_resolver.rb
291
+ - lib/nvoi/config/loader.rb
292
+ - lib/nvoi/config/naming.rb
293
+ - lib/nvoi/config/ssh_keys.rb
294
+ - lib/nvoi/config/types.rb
295
+ - lib/nvoi/constants.rb
296
+ - lib/nvoi/credentials/crypto.rb
297
+ - lib/nvoi/credentials/editor.rb
298
+ - lib/nvoi/credentials/manager.rb
299
+ - lib/nvoi/deployer/cleaner.rb
300
+ - lib/nvoi/deployer/image_builder.rb
301
+ - lib/nvoi/deployer/infrastructure.rb
302
+ - lib/nvoi/deployer/orchestrator.rb
303
+ - lib/nvoi/deployer/retry.rb
304
+ - lib/nvoi/deployer/service_deployer.rb
305
+ - lib/nvoi/deployer/tunnel_manager.rb
306
+ - lib/nvoi/deployer/types.rb
307
+ - lib/nvoi/errors.rb
308
+ - lib/nvoi/k8s/renderer.rb
309
+ - lib/nvoi/k8s/templates.rb
310
+ - lib/nvoi/logger.rb
311
+ - lib/nvoi/providers/aws.rb
312
+ - lib/nvoi/providers/base.rb
313
+ - lib/nvoi/providers/hetzner.rb
314
+ - lib/nvoi/providers/hetzner_client.rb
315
+ - lib/nvoi/remote/docker_manager.rb
316
+ - lib/nvoi/remote/ssh_executor.rb
317
+ - lib/nvoi/remote/volume_manager.rb
318
+ - lib/nvoi/service/delete.rb
319
+ - lib/nvoi/service/deploy.rb
320
+ - lib/nvoi/service/exec.rb
321
+ - lib/nvoi/service/provider.rb
322
+ - lib/nvoi/steps/application_deployer.rb
323
+ - lib/nvoi/steps/database_provisioner.rb
324
+ - lib/nvoi/steps/k3s_cluster_setup.rb
325
+ - lib/nvoi/steps/k3s_provisioner.rb
326
+ - lib/nvoi/steps/server_provisioner.rb
327
+ - lib/nvoi/steps/services_provisioner.rb
328
+ - lib/nvoi/steps/tunnel_configurator.rb
329
+ - lib/nvoi/steps/volume_provisioner.rb
330
+ - lib/nvoi/version.rb
331
+ - templates/app-deployment.yaml.erb
332
+ - templates/app-ingress.yaml.erb
333
+ - templates/app-secret.yaml.erb
334
+ - templates/app-service.yaml.erb
335
+ - templates/db-statefulset.yaml.erb
336
+ - templates/service-deployment.yaml.erb
337
+ - templates/worker-deployment.yaml.erb
338
+ homepage: https://github.com/getnvoi/cli
339
+ licenses:
340
+ - MIT
341
+ metadata: {}
342
+ post_install_message:
343
+ rdoc_options: []
344
+ require_paths:
345
+ - lib
346
+ required_ruby_version: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: 3.2.0
351
+ required_rubygems_version: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - ">="
354
+ - !ruby/object:Gem::Version
355
+ version: '0'
356
+ requirements: []
357
+ rubygems_version: 3.4.19
358
+ signing_key:
359
+ specification_version: 4
360
+ summary: NVOI deployment tool
361
+ test_files: []