roro 0.3.28 → 0.3.30

Sign up to get free protection for your applications and to get access to all the features.
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