roro 0.3.28 → 0.3.30

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +24 -8
  3. data/.idea/.gitignore +8 -0
  4. data/.idea/inspectionProfiles/Project_Default.xml +6 -0
  5. data/.idea/misc.xml +4 -0
  6. data/.idea/modules.xml +8 -0
  7. data/.idea/roro.iml +116 -0
  8. data/.idea/vcs.xml +6 -0
  9. data/CODE_OF_CONDUCT.md +31 -77
  10. data/lib/roro/cli/generate/generate_containers.rb +0 -5
  11. data/lib/roro/cli.rb +8 -8
  12. data/lib/roro/configurators/adventure_chooser.rb +1 -0
  13. data/lib/roro/configurators/adventure_picker.rb +1 -0
  14. data/lib/roro/configurators/adventure_writer.rb +4 -1
  15. data/lib/roro/configurators/configurator.rb +15 -8
  16. data/lib/roro/configurators/dependency_satisfier.rb +136 -0
  17. data/lib/roro/configurators/question_asker.rb +3 -3
  18. data/lib/roro/configurators/structure_builder.rb +2 -0
  19. data/lib/roro/configurators/validator.rb +2 -0
  20. data/lib/roro/dependencies/base.yml +90 -0
  21. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/_django.yml +7 -0
  22. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/django.yml +2 -8
  23. data/lib/roro/stacks/catalog/unstoppable/developer_styles/fatsufodo/stories/django/test/stage_one/stage_one_test.rb +1 -1
  24. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/%interpolated_story_name%.yml.tt → languages/python/python.yml} +0 -0
  25. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/templates/stage_one/.keep +0 -0
  26. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/.keep +0 -0
  27. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/stage_one/.keep +0 -0
  28. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/templates/stage_one/%interpolated_stack_path% → languages/python}/test/stage_one/stage_dummy/.keep +0 -0
  29. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/python/test/stage_one/stage_test.rb +42 -0
  30. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/ruby.yml +10 -0
  31. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/rails.yml +36 -0
  32. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/{stories/roll_your_own/test/stage_one/dummy → languages/ruby/stories/rails/templates/stage_one}/.keep +0 -0
  33. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/templates/stage_one/Dockerfile.tt +26 -0
  34. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/6_1.yml +44 -0
  35. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/.env +6 -0
  36. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/Dockerfile.tt +28 -0
  37. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/config/database.yml +19 -0
  38. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/config/initializers/sidekiq.rb +13 -0
  39. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/docker-compose.yml.tt +57 -0
  40. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/django/test/stage_one/dummy → okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints}/.keep +0 -0
  41. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints/docker-entrypoint.sh +9 -0
  42. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/templates/stage_one/entrypoints/sidekiq-entrypoint.sh +9 -0
  43. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/django/test/stage_two/dummy → okonomi/languages/ruby/stories/rails/versions/6_1/test}/.keep +0 -0
  44. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{sashimi/stories/rails/templates/stage_one/Gemfile.lock.tt → okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/.keep} +0 -0
  45. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_dummy/.keep +0 -0
  46. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_dummy/Gemfile +66 -0
  47. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/6_1/test/stage_one/stage_test.rb +38 -0
  48. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/7_0.yml +38 -0
  49. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/.env +6 -0
  50. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/Dockerfile.tt +28 -0
  51. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/config/database.yml +19 -0
  52. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/config/initializers/sidekiq.rb +13 -0
  53. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/docker-compose.yml.tt +57 -0
  54. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/.keep +0 -0
  55. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/docker-entrypoint.sh +9 -0
  56. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/templates/stage_one/entrypoints/sidekiq-entrypoint.sh +9 -0
  57. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/.keep +0 -0
  58. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/.keep +0 -0
  59. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_dummy/.keep +0 -0
  60. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_dummy/Gemfile +66 -0
  61. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/languages/ruby/stories/rails/versions/7_0/test/stage_one/stage_test.rb +37 -0
  62. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/okonomi.yml +4 -1
  63. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/templates/stage_one/.dockerignore +18 -0
  64. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/templates/stage_one/.env +1 -1
  65. data/lib/roro/stacks/catalog/unstoppable/developer_styles/omakase/stories/wordpress/test/stage_one/stage_test.rb +2 -10
  66. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/sashimi.yml +1 -1
  67. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/cert-manager.yml +32 -0
  68. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/.keep +0 -0
  69. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo1.yaml +32 -0
  70. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo2.yaml +32 -0
  71. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/echo_ingress.yaml.tt +18 -0
  72. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/prod_issuer.yaml.tt +19 -0
  73. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_1/staging_issuer.yaml.tt +19 -0
  74. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_2/echo_ingress.yaml.tt +25 -0
  75. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_3/echo_ingress.yaml.tt +25 -0
  76. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/templates/stage_3/ingress_nginx_svc.yaml.tt +31 -0
  77. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/.keep +0 -0
  78. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/.keep +0 -0
  79. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/stage_dummy/.keep +0 -0
  80. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/kubernetes/stories/ingress/stories/nginx/stories/cert-manager/test/stage_one/stage_test.rb +32 -0
  81. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/rails.yml +48 -9
  82. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.env +4 -0
  83. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.gitignore +55 -0
  84. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/.keep +0 -0
  85. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/docker-compose.yml.tt +36 -12
  86. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/.keep +0 -0
  87. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/app-deployment.yaml.tt +72 -0
  88. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/app-service.yaml.tt +20 -0
  89. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/database-deployment.yaml.tt +59 -0
  90. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/database-service.yaml.tt +19 -0
  91. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/db-data-persistentvolumeclaim.yaml.tt +14 -0
  92. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/env-configmap.yaml.tt +12 -0
  93. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/redis-deployment.yaml.tt +33 -0
  94. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/redis-service.yaml.tt +19 -0
  95. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/secret.yaml.tt +11 -0
  96. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/k8s/sidekiq-deployment.yaml.tt +56 -0
  97. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/.keep +0 -0
  98. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/.keep +0 -0
  99. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/stage_dummy/.keep +0 -0
  100. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/test/stage_one/stage_test.rb +33 -0
  101. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{okonomi → sashimi}/stories/roll_your_own/roll_your_own.yml +1 -0
  102. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/%interpolated_story_name%.yml.tt +10 -0
  103. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/templates/stage_one/.keep +0 -0
  104. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/.keep +0 -0
  105. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/.keep +0 -0
  106. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_dummy/.keep +0 -0
  107. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_test.rb.tt +41 -0
  108. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/templates/stage_one/.gitignore.tt +55 -0
  109. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roll_your_own/test/stage_one/dummy/.keep +0 -0
  110. data/lib/roro/stacks/catalog/unstoppable/developer_styles/{okonomi → sashimi}/stories/roll_your_own/test/stage_one/stage_one_test.rb +2 -1
  111. data/lib/roro/version.rb +1 -1
  112. data/lib/roro.rb +4 -10
  113. data/mise/containers/backend/env/.keep +0 -0
  114. data/mise/containers/backend/scripts/.keep +0 -0
  115. data/mise/containers/database/env/.keep +0 -0
  116. data/mise/containers/database/scripts/.keep +0 -0
  117. data/mise/containers/frontend/env/.keep +0 -0
  118. data/mise/containers/frontend/scripts/.keep +0 -0
  119. data/mise/scripts/.keep +0 -0
  120. data/roro.gemspec +3 -3
  121. metadata +115 -72
  122. data/.ruby-version +0 -1
  123. data/lib/roro/cli/roll_your_own.rb +0 -12
  124. data/lib/roro/configurator.rb +0 -15
  125. data/lib/roro/stacks/catalog/unstoppable/developer_styles/okonomi/stories/roll_your_own/templates/stage_one/%interpolated_stack_path%/test/stage_one/stage_test.rb.tt +0 -37
  126. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/django.yml +0 -36
  127. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/Dockerfile.tt +0 -7
  128. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/docker-compose.yml.tt +0 -20
  129. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_one/requirements.txt.tt +0 -2
  130. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/templates/stage_two/settings.py +0 -130
  131. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/django/test/stage_one/stage_one_test.rb +0 -37
  132. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/expressjs.yml +0 -7
  133. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/Dockerfile.tt +0 -14
  134. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/expressjs/templates/stage_one/docker-compose.yml.tt +0 -21
  135. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Dockerfile.tt +0 -16
  136. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/Gemfile.tt +0 -2
  137. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_one/entrypoint.sh +0 -8
  138. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/rails/templates/stage_two/database.yml.tt +0 -16
  139. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/__MACOSX/scripts/._.DS_Store +0 -0
  140. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/.DS_Store +0 -0
  141. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/bundler.sh +0 -22
  142. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/git.sh +0 -21
  143. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/rvm.sh +0 -38
  144. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base/utilities.sh +0 -53
  145. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/base.sh +0 -6
  146. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_idea.sh +0 -14
  147. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/clone_repos.sh +0 -33
  148. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_correct_bundler.sh +0 -21
  149. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize/install_rubies.sh +0 -6
  150. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/initialize.sh +0 -18
  151. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/roro.sh +0 -15
  152. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/source.sh +0 -28
  153. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/bundle_all.sh +0 -12
  154. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/git_pull_all.sh +0 -15
  155. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/rvm_install_all.sh +0 -12
  156. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/roro/templates/scripts/utility/yarn_install_all.sh +0 -10
  157. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/templates/stage_one/docker-compose.yml.tt +0 -31
  158. data/lib/roro/stacks/catalog/unstoppable/developer_styles/sashimi/stories/wordpress/wordpress.yml +0 -16
@@ -0,0 +1,25 @@
1
+ apiVersion: networking.k8s.io/v1beta1
2
+ kind: Ingress
3
+ metadata:
4
+ name: echo-ingress
5
+ annotations:
6
+ cert-manager.io/cluster-issuer: "letsencrypt-prod"
7
+ spec:
8
+ tls:
9
+ - hosts:
10
+ - echo1.<%= @env[:base][:domain_name][:value] %>
11
+ - echo2.<%= @env[:base][:domain_name][:value] %>
12
+ secretName: echo-tls
13
+ rules:
14
+ - host: echo1.<%= @env[:base][:domain_name][:value] %>
15
+ http:
16
+ paths:
17
+ - backend:
18
+ serviceName: echo1
19
+ servicePort: 80
20
+ - host: echo2.example.com
21
+ http:
22
+ paths:
23
+ - backend:
24
+ serviceName: echo2
25
+ servicePort: 80
@@ -0,0 +1,31 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ annotations:
5
+ service.beta.kubernetes.io/do-loadbalancer-enable-proxy-protocol: 'true'
6
+ service.beta.kubernetes.io/do-loadbalancer-hostname: "workaround.bierstiefel.com"
7
+ labels:
8
+ helm.sh/chart: ingress-nginx-2.11.1
9
+ app.kubernetes.io/name: ingress-nginx
10
+ app.kubernetes.io/instance: ingress-nginx
11
+ app.kubernetes.io/version: 0.34.1
12
+ app.kubernetes.io/managed-by: Helm
13
+ app.kubernetes.io/component: controller
14
+ name: ingress-nginx-controller
15
+ namespace: ingress-nginx
16
+ spec:
17
+ type: LoadBalancer
18
+ externalTrafficPolicy: Local
19
+ ports:
20
+ - name: http
21
+ port: 80
22
+ protocol: TCP
23
+ targetPort: http
24
+ - name: https
25
+ port: 443
26
+ protocol: TCP
27
+ targetPort: https
28
+ selector:
29
+ app.kubernetes.io/name: ingress-nginx
30
+ app.kubernetes.io/instance: ingress-nginx
31
+ app.kubernetes.io/component: controller
@@ -0,0 +1,32 @@
1
+
2
+ require 'test_helper'
3
+
4
+ describe 'kubernetes ingress nginx cert-manager' do
5
+ Given { skip }
6
+ Given(:workbench) { 'empty' }
7
+ Given(:cli) { Roro::CLI.new }
8
+ Given(:adventures) { %w[4] }
9
+ Given(:overrides) { %w[4 1] }
10
+
11
+ Given(:rollon) {
12
+ stub_adventure
13
+ stub_overrides
14
+ stub_run_actions
15
+ cli.rollon
16
+ }
17
+
18
+ Given { rollon unless adventures.empty?}
19
+
20
+ context 'when default variables interpolated' do
21
+ Then { assert_file "lib/roro" }
22
+ end
23
+
24
+ context 'when many items interpolated' do
25
+ Given(:contents) { [:env, :preface, :actions] }
26
+ Then {
27
+ contents.each { |c|
28
+ assert_file "lib/roro/stacks", c
29
+ }
30
+ }
31
+ end
32
+ end
@@ -1,12 +1,51 @@
1
- preface: A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant
2
- syntax that is natural to read and easy to write.
1
+ preface: some string
2
+
3
+ depends_on:
4
+ - doctl
5
+
6
+ env:
7
+ base:
8
+ do_cluster_id:
9
+ name: Digital Ocean Kubernetes cluster id
10
+ value: 0e23750a-05a4-49f0-8fad-42a201995afc
11
+ help: https://docs.digitalocean.com/reference/doctl/reference/kubernetes/cluster/get/
12
+ do_cluster_name:
13
+ name: Digital Ocean Kubernetes cluster name
14
+ value: k8s-1-21-5-do-0-sfo3-1635359659910
15
+ help: https://docs.digitalocean.com/products/kubernetes/how-to/connect-to-cluster/
16
+ domain_name:
17
+ name: Domain name people will use to find your app
18
+ value: bierstiefel.com
19
+ docker_hub_username:
20
+ name: The username you log into hub.docker.com with
21
+ value: dhusername
22
+ required: true
23
+ docker_hub_password:
24
+ name: The password you log into hub.docker.com with
25
+ value: dhpassword
26
+ required: true
27
+ docker_hub_organization:
28
+ name: The hub.docker.com organization for your image is often but not always the same as your username.
29
+ value: handsomefencer
30
+ app_name:
31
+ name: Name for your app
32
+ value: rails-kubernetes
33
+ DATABASE_NAME:
34
+ name: Database name
35
+ value: postgres
36
+ DATABASE_PASSWORD:
37
+ name: Database password
38
+ value: postgres
39
+ DATABASE_USER:
40
+ name: Database username
41
+ value: postgres
3
42
 
4
43
  actions:
5
44
  - directory 'stage_one', '.', @env
6
- - system "docker-compose run --no-deps web rails new . --force --database=postgresql"
7
- - system "sudo chown -R $USER:$USER ."
8
- - template 'stage_two/database.yml.tt', './config/database.yml', @env
9
- - system "docker-compose build"
10
- - system "sudo chown -R $USER:$USER ."
11
- - system "docker-compose run web rake db:create"
12
- - system "docker-compose up"
45
+ - run "doctl kubernetes cluster kubeconfig save \"#{@env[:base][:do_cluster_id][:value]}\""
46
+ - |
47
+ inside('k8s') do
48
+ run "kubectl create -f ./ --validate=true"
49
+ run "kubectl get pods -l io.kompose.service=app"
50
+ end
51
+ - run "kubectl exec $(kubectl get pods -o=name -l io.kompose.service=app) -- rake db:migrate"
@@ -0,0 +1,4 @@
1
+ DATABASE_HOST=database
2
+ DATABASE_PORT=5432
3
+ REDIS_HOST=redis
4
+ REDIS_PORT=6379
@@ -0,0 +1,55 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ Gemfile.lock
9
+ .byebug_history
10
+
11
+ ## circleci
12
+ process.yml
13
+
14
+ ## roro
15
+ roro/**/*.env
16
+ roro/**/*.key
17
+ *.key
18
+ *.env
19
+ !/lib/roro/stacks/**/*.key
20
+ !/lib/roro/stacks/**/*.env
21
+ !test/**/*.key
22
+ !test/**/*.env
23
+ !/.gitignore
24
+ *.gem
25
+ tmp/*
26
+ !tmp/.keep
27
+ TUTORIAL.md
28
+
29
+ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
30
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
31
+
32
+ # User-specific stuff
33
+ .idea/**/workspace.xml
34
+ .idea/**/tasks.xml
35
+ .idea/**/usage.statistics.xml
36
+ .idea/**/dictionaries
37
+ .idea/**/shelf
38
+
39
+ # Generated files
40
+ .idea/**/contentModel.xml
41
+
42
+ # Sensitive or high-churn files
43
+ .idea/**/dataSources/
44
+ .idea/**/dataSources.ids
45
+ .idea/**/dataSources.local.xml
46
+ .idea/**/sqlDataSources.xml
47
+ .idea/**/dynamic.xml
48
+ .idea/**/uiDesigner.xml
49
+ .idea/**/dbnavigator.xml
50
+
51
+ # File-based project format
52
+ *.iws
53
+
54
+ # IntelliJ
55
+ out/
@@ -1,17 +1,41 @@
1
- version: "3"
1
+ version: '3'
2
+
2
3
  services:
3
- db:
4
- image: postgres
5
- volumes:
6
- - ./tmp/db:/var/lib/postgresql/data
4
+ app:
5
+ image: <%= @env[:base][:docker_hub_organization][:value] %>/<%= @env[:base][:app_name][:value] %>
6
+ depends_on:
7
+ - database
8
+ - redis
9
+ ports:
10
+ - "3000:3000"
11
+ env_file: .env
7
12
  environment:
8
- POSTGRES_PASSWORD: password
9
- web:
10
- build: .
11
- command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
13
+ RAILS_ENV: development
14
+
15
+ database:
16
+ image: postgres:12.1
12
17
  volumes:
13
- - .:/myapp
18
+ - db_data:/var/lib/postgresql/data
14
19
  ports:
15
- - "3000:3000"
20
+ - "5432:5432"
21
+ environment:
22
+ PGDATA: /var/lib/postgresql/data/pgdata
23
+
24
+ redis:
25
+ image: redis:5.0.7
26
+ ports:
27
+ - "6379:6379"
28
+
29
+ sidekiq:
30
+ image: <%= @env[:base][:docker_hub_organization][:value] %>/<%= @env[:base][:app_name][:value] %>
16
31
  depends_on:
17
- - db
32
+ - app
33
+ - database
34
+ - redis
35
+ env_file: .env
36
+ environment:
37
+ RAILS_ENV: development
38
+ entrypoint: ./entrypoints/sidekiq-entrypoint.sh
39
+
40
+ volumes:
41
+ db_data:
@@ -0,0 +1,72 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: app
10
+ name: app
11
+ spec:
12
+ replicas: 1
13
+ selector:
14
+ matchLabels:
15
+ io.kompose.service: app
16
+ strategy: {}
17
+ template:
18
+ metadata:
19
+ annotations:
20
+ kompose.cmd: kompose convert --out ./k8s
21
+ kompose.version: 1.22.0 (955b78124)
22
+ creationTimestamp: null
23
+ labels:
24
+ io.kompose.service: app
25
+ spec:
26
+ containers:
27
+ - env:
28
+ - name: DATABASE_HOST
29
+ valueFrom:
30
+ configMapKeyRef:
31
+ key: DATABASE_HOST
32
+ name: env
33
+ - name: DATABASE_PORT
34
+ valueFrom:
35
+ configMapKeyRef:
36
+ key: DATABASE_PORT
37
+ name: env
38
+ - name: RAILS_ENV
39
+ value: development
40
+ - name: REDIS_HOST
41
+ valueFrom:
42
+ configMapKeyRef:
43
+ key: REDIS_HOST
44
+ name: env
45
+ - name: REDIS_PORT
46
+ valueFrom:
47
+ configMapKeyRef:
48
+ key: REDIS_PORT
49
+ name: env
50
+ - name: DATABASE_NAME
51
+ valueFrom:
52
+ secretKeyRef:
53
+ name: database-secret
54
+ key: DATABASE_NAME
55
+ - name: DATABASE_PASSWORD
56
+ valueFrom:
57
+ secretKeyRef:
58
+ name: database-secret
59
+ key: DATABASE_PASSWORD
60
+ - name: DATABASE_USER
61
+ valueFrom:
62
+ secretKeyRef:
63
+ name: database-secret
64
+ key: DATABASE_USER
65
+
66
+ image: handsomefencer/rails-kubernetes
67
+ name: app
68
+ ports:
69
+ - containerPort: 3000
70
+ resources: {}
71
+ restartPolicy: Always
72
+ status: {}
@@ -0,0 +1,20 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: app
10
+ name: app
11
+ spec:
12
+ type: LoadBalancer
13
+ ports:
14
+ - name: "3000"
15
+ port: 3000
16
+ targetPort: 3000
17
+ selector:
18
+ io.kompose.service: app
19
+ status:
20
+ loadBalancer: {}
@@ -0,0 +1,59 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: database
10
+ name: database
11
+ spec:
12
+ replicas: 1
13
+ selector:
14
+ matchLabels:
15
+ io.kompose.service: database
16
+ strategy:
17
+ type: Recreate
18
+ template:
19
+ metadata:
20
+ annotations:
21
+ kompose.cmd: kompose convert --out ./k8s
22
+ kompose.version: 1.22.0 (955b78124)
23
+ creationTimestamp: null
24
+ labels:
25
+ io.kompose.service: database
26
+ spec:
27
+ containers:
28
+ - env:
29
+ - name: PGDATA
30
+ value: /var/lib/postgresql/data/pgdata
31
+ - name: POSTGRES_DB
32
+ valueFrom:
33
+ secretKeyRef:
34
+ name: database-secret
35
+ key: POSTGRES_DB
36
+ - name: POSTGRES_PASSWORD
37
+ valueFrom:
38
+ secretKeyRef:
39
+ name: database-secret
40
+ key: POSTGRES_PASSWORD
41
+ - name: POSTGRES_USER
42
+ valueFrom:
43
+ secretKeyRef:
44
+ name: database-secret
45
+ key: POSTGRES_USER
46
+ image: postgres:12.1
47
+ name: database
48
+ ports:
49
+ - containerPort: 5432
50
+ resources: {}
51
+ volumeMounts:
52
+ - mountPath: /var/lib/postgresql/data
53
+ name: db-data
54
+ restartPolicy: Always
55
+ volumes:
56
+ - name: db-data
57
+ persistentVolumeClaim:
58
+ claimName: db-data
59
+ status: {}
@@ -0,0 +1,19 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: database
10
+ name: database
11
+ spec:
12
+ ports:
13
+ - name: "5432"
14
+ port: 5432
15
+ targetPort: 5432
16
+ selector:
17
+ io.kompose.service: database
18
+ status:
19
+ loadBalancer: {}
@@ -0,0 +1,14 @@
1
+ apiVersion: v1
2
+ kind: PersistentVolumeClaim
3
+ metadata:
4
+ creationTimestamp: null
5
+ labels:
6
+ io.kompose.service: db-data
7
+ name: db-data
8
+ spec:
9
+ accessModes:
10
+ - ReadWriteOnce
11
+ resources:
12
+ requests:
13
+ storage: 1Gi
14
+ status: {}
@@ -0,0 +1,12 @@
1
+ apiVersion: v1
2
+ data:
3
+ DATABASE_HOST: database
4
+ DATABASE_PORT: "5432"
5
+ REDIS_HOST: redis
6
+ REDIS_PORT: "6379"
7
+ kind: ConfigMap
8
+ metadata:
9
+ creationTimestamp: null
10
+ labels:
11
+ io.kompose.service: app-env
12
+ name: env
@@ -0,0 +1,33 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: redis
10
+ name: redis
11
+ spec:
12
+ replicas: 1
13
+ selector:
14
+ matchLabels:
15
+ io.kompose.service: redis
16
+ strategy: {}
17
+ template:
18
+ metadata:
19
+ annotations:
20
+ kompose.cmd: kompose convert --out ./k8s
21
+ kompose.version: 1.22.0 (955b78124)
22
+ creationTimestamp: null
23
+ labels:
24
+ io.kompose.service: redis
25
+ spec:
26
+ containers:
27
+ - image: redis:5.0.7
28
+ name: redis
29
+ ports:
30
+ - containerPort: 6379
31
+ resources: {}
32
+ restartPolicy: Always
33
+ status: {}
@@ -0,0 +1,19 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: redis
10
+ name: redis
11
+ spec:
12
+ ports:
13
+ - name: "6379"
14
+ port: 6379
15
+ targetPort: 6379
16
+ selector:
17
+ io.kompose.service: redis
18
+ status:
19
+ loadBalancer: {}
@@ -0,0 +1,11 @@
1
+ apiVersion: v1
2
+ kind: Secret
3
+ metadata:
4
+ name: database-secret
5
+ data:
6
+ DATABASE_NAME: <%= Base64.encode64(@env[:base][:DATABASE_NAME][:value]) %>
7
+ DATABASE_PASSWORD: <%= Base64.encode64(@env[:base][:DATABASE_PASSWORD][:value]) %>
8
+ DATABASE_USER: <%= Base64.encode64(@env[:base][:DATABASE_USER][:value]) %>
9
+ POSTGRES_DB: <%= Base64.encode64(@env[:base][:DATABASE_NAME][:value]) %>
10
+ POSTGRES_PASSWORD: <%= Base64.encode64(@env[:base][:DATABASE_PASSWORD][:value]) %>
11
+ POSTGRES_USER: <%= Base64.encode64(@env[:base][:DATABASE_USER][:value]) %>
@@ -0,0 +1,56 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ annotations:
5
+ kompose.cmd: kompose convert --out ./k8s
6
+ kompose.version: 1.22.0 (955b78124)
7
+ creationTimestamp: null
8
+ labels:
9
+ io.kompose.service: sidekiq
10
+ name: sidekiq
11
+ spec:
12
+ replicas: 1
13
+ selector:
14
+ matchLabels:
15
+ io.kompose.service: sidekiq
16
+ strategy: {}
17
+ template:
18
+ metadata:
19
+ annotations:
20
+ kompose.cmd: kompose convert --out ./k8s
21
+ kompose.version: 1.22.0 (955b78124)
22
+ creationTimestamp: null
23
+ labels:
24
+ io.kompose.service: sidekiq
25
+ spec:
26
+ containers:
27
+ - command:
28
+ - ./entrypoints/sidekiq-entrypoint.sh
29
+ env:
30
+ - name: DATABASE_HOST
31
+ valueFrom:
32
+ configMapKeyRef:
33
+ key: DATABASE_HOST
34
+ name: env
35
+ - name: DATABASE_PORT
36
+ valueFrom:
37
+ configMapKeyRef:
38
+ key: DATABASE_PORT
39
+ name: env
40
+ - name: RAILS_ENV
41
+ value: development
42
+ - name: REDIS_HOST
43
+ valueFrom:
44
+ configMapKeyRef:
45
+ key: REDIS_HOST
46
+ name: env
47
+ - name: REDIS_PORT
48
+ valueFrom:
49
+ configMapKeyRef:
50
+ key: REDIS_PORT
51
+ name: env
52
+ image: handsomefencer/rails-kubernetes
53
+ name: sidekiq
54
+ resources: {}
55
+ restartPolicy: Always
56
+ status: {}
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ describe 'lib roro stacks catalog unstoppable developer_styles sashimi stories rails' do
4
+ Given(:workbench) { 'empty' }
5
+ Given(:cli) { Roro::CLI.new }
6
+ Given(:adventures) { %w[4 2] }
7
+ Given(:overrides) { %w[] }
8
+
9
+ Given(:rollon) {
10
+ stub_adventure
11
+ stub_overrides
12
+ stub_run_actions
13
+ stub_dependencies_installed
14
+ quiet { cli.rollon }
15
+ # cli.rollon
16
+ }
17
+
18
+
19
+ Given { rollon unless adventures.empty?}
20
+
21
+ Given(:contents) { [ /version: '3'/, /entrypoints\/sidekiq-entrypoint\.sh/] }
22
+
23
+ describe 'docker-compose.yml' do
24
+ When(:installed) { false }
25
+ # Then { contents.each { |c| assert_file "docker-compose.yml", c } }
26
+ end
27
+
28
+ describe 'k8s manifests' do
29
+ # Then { assert_file "k8s/app-deployment.yaml", /image: handsomefencer\/rails-kubernetes/ }
30
+ # And { assert_file "k8s/database-deployment.yaml", /name: database-secret/ }
31
+ # And { assert_file "k8s/secret.yaml", /DATABASE_NAME: cG9zdGdyZXM=/ }
32
+ end
33
+ end
@@ -8,6 +8,7 @@ env:
8
8
  stack:
9
9
  name: Stack location
10
10
  value: 'mise/stacks'
11
+ path: true
11
12
 
12
13
  actions:
13
14
  - |
@@ -0,0 +1,10 @@
1
+ preface: some string
2
+
3
+ env:
4
+ base:
5
+ app_name:
6
+ name: Name for your app
7
+ value: 'unstoppable app name'
8
+
9
+ actions:
10
+ - directory 'stage_one', '.', @env