ufo 5.0.7 → 6.0.0

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 (457) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/README.md +19 -0
  3. data/.cody/acceptance/bin/build.sh +90 -0
  4. data/.cody/acceptance/buildspec.yml +10 -0
  5. data/.cody/acceptance/project.rb +11 -0
  6. data/.cody/acceptance/role.rb +28 -0
  7. data/.cody/shared/script/install/ufo.sh +40 -0
  8. data/.cody/shared/script/install.sh +5 -0
  9. data/.github/workflows/main.yml +28 -0
  10. data/CHANGELOG.md +4 -1
  11. data/Gemfile +0 -2
  12. data/README.md +1 -32
  13. data/lib/templates/docker/Dockerfile +4 -0
  14. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  15. data/lib/templates/init/.ufo/config/web/base.rb +6 -0
  16. data/lib/templates/init/.ufo/config/web/dev.rb +6 -0
  17. data/lib/templates/init/.ufo/config/web/prod.rb +6 -0
  18. data/lib/templates/init/.ufo/config.rb.tt +39 -0
  19. data/lib/templates/init/.ufo/resources/iam_roles/execution_role.rb +23 -0
  20. data/lib/templates/init/.ufo/resources/iam_roles/task_role.rb +20 -0
  21. data/lib/templates/init/.ufo/resources/task_definitions/web.yml +29 -0
  22. data/lib/templates/init/.ufo/vars/base.rb +20 -0
  23. data/lib/templates/init/.ufo/vars/dev.rb +4 -0
  24. data/lib/templates/init/.ufo/vars/prod.rb +4 -0
  25. data/lib/ufo/aws_services.rb +118 -0
  26. data/lib/ufo/booter.rb +27 -0
  27. data/lib/ufo/cfn/base.rb +7 -0
  28. data/lib/ufo/cfn/deploy.rb +54 -0
  29. data/lib/ufo/{stack → cfn/stack}/builder/base.rb +12 -23
  30. data/lib/ufo/cfn/stack/builder/conditions.rb +25 -0
  31. data/lib/ufo/{stack → cfn/stack}/builder/outputs.rb +2 -2
  32. data/lib/ufo/cfn/stack/builder/parameters.rb +34 -0
  33. data/lib/ufo/cfn/stack/builder/resources/base.rb +4 -0
  34. data/lib/ufo/cfn/stack/builder/resources/dns.rb +47 -0
  35. data/lib/ufo/{stack/builder/resources/ecs.rb → cfn/stack/builder/resources/ecs_service.rb} +11 -10
  36. data/lib/ufo/cfn/stack/builder/resources/elb.rb +35 -0
  37. data/lib/ufo/cfn/stack/builder/resources/iam_roles/base.rb +32 -0
  38. data/lib/ufo/cfn/stack/builder/resources/iam_roles/execution_role.rb +4 -0
  39. data/lib/ufo/cfn/stack/builder/resources/iam_roles/task_role.rb +4 -0
  40. data/lib/ufo/cfn/stack/builder/resources/listener.rb +65 -0
  41. data/lib/ufo/cfn/stack/builder/resources/listener_ssl.rb +44 -0
  42. data/lib/ufo/cfn/stack/builder/resources/scaling/base.rb +5 -0
  43. data/lib/ufo/cfn/stack/builder/resources/scaling/policy.rb +27 -0
  44. data/lib/ufo/cfn/stack/builder/resources/scaling/role.rb +33 -0
  45. data/lib/ufo/cfn/stack/builder/resources/scaling/target.rb +22 -0
  46. data/lib/ufo/cfn/stack/builder/resources/security_group/base.rb +4 -0
  47. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs.rb +4 -4
  48. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs_rule.rb +2 -2
  49. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/elb.rb +5 -6
  50. data/lib/ufo/{stack → cfn/stack}/builder/resources/target_group.rb +4 -4
  51. data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition/reconstructor.rb +4 -4
  52. data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition.rb +4 -4
  53. data/lib/ufo/cfn/stack/builder/resources.rb +24 -0
  54. data/lib/ufo/cfn/stack/builder.rb +30 -0
  55. data/lib/ufo/{stack → cfn/stack}/custom_properties.rb +21 -5
  56. data/lib/ufo/cfn/stack/params.rb +51 -0
  57. data/lib/ufo/{stack → cfn/stack}/status.rb +2 -2
  58. data/lib/ufo/cfn/stack/template.rb +8 -0
  59. data/lib/ufo/cfn/stack/vars.rb +110 -0
  60. data/lib/ufo/cfn/stack/vpc.rb +31 -0
  61. data/lib/ufo/cfn/stack.rb +175 -0
  62. data/lib/ufo/cli/base.rb +18 -0
  63. data/lib/ufo/cli/build.rb +30 -0
  64. data/lib/ufo/cli/cancel.rb +18 -0
  65. data/lib/ufo/cli/central/update.rb +80 -0
  66. data/lib/ufo/cli/central.rb +12 -0
  67. data/lib/ufo/cli/clean.rb +17 -0
  68. data/lib/ufo/cli/destroy.rb +31 -0
  69. data/lib/ufo/{docker.rb → cli/docker.rb} +18 -18
  70. data/lib/ufo/cli/exec.rb +82 -0
  71. data/lib/ufo/cli/help/central/update.md +20 -0
  72. data/lib/ufo/{help → cli/help}/completion.md +0 -0
  73. data/lib/ufo/{help → cli/help}/completion_script.md +0 -0
  74. data/lib/ufo/cli/help/destroy.md +9 -0
  75. data/lib/ufo/cli/help/docker/base.md +39 -0
  76. data/lib/ufo/{help → cli/help}/docker/build.md +9 -9
  77. data/lib/ufo/{help → cli/help}/docker/clean.md +8 -8
  78. data/lib/ufo/{help → cli/help}/docker/compile.md +0 -0
  79. data/lib/ufo/cli/help/docker/name.md +16 -0
  80. data/lib/ufo/{help → cli/help}/docker/push.md +0 -0
  81. data/lib/ufo/cli/help/docker.md +6 -0
  82. data/lib/ufo/{help → cli/help}/help.md +1 -1
  83. data/lib/ufo/cli/help/init.md +27 -0
  84. data/lib/ufo/{help → cli/help}/logs.md +5 -4
  85. data/lib/ufo/cli/help/ps.md +12 -0
  86. data/lib/ufo/cli/help/releases.md +15 -0
  87. data/lib/ufo/cli/help/rollback.md +40 -0
  88. data/lib/ufo/cli/help/scale.md +7 -0
  89. data/lib/ufo/cli/help/ship.md +41 -0
  90. data/lib/ufo/cli/help/stop.md +3 -0
  91. data/lib/ufo/cli/help.rb +62 -0
  92. data/lib/ufo/{logs.rb → cli/logs.rb} +13 -6
  93. data/lib/ufo/cli/new/concerns.rb +16 -0
  94. data/lib/ufo/cli/new/helper.rb +24 -0
  95. data/lib/ufo/cli/new/init.rb +68 -0
  96. data/lib/ufo/{sequence.rb → cli/new/sequence.rb} +26 -4
  97. data/lib/ufo/cli/new.rb +10 -0
  98. data/lib/ufo/cli/opts.rb +35 -0
  99. data/lib/ufo/{ps → cli/ps}/task.rb +22 -29
  100. data/lib/ufo/cli/ps.rb +190 -0
  101. data/lib/ufo/{releases.rb → cli/releases.rb} +4 -4
  102. data/lib/ufo/{rollback.rb → cli/rollback.rb} +24 -12
  103. data/lib/ufo/cli/scale.rb +76 -0
  104. data/lib/ufo/cli/ship.rb +28 -0
  105. data/lib/ufo/cli/status.rb +8 -0
  106. data/lib/ufo/cli/stop.rb +49 -0
  107. data/lib/ufo/{tasks.rb → cli/tasks.rb} +2 -2
  108. data/lib/ufo/{upgrade.rb → cli/upgrade.rb} +2 -2
  109. data/lib/ufo/cli.rb +82 -172
  110. data/lib/ufo/command.rb +56 -1
  111. data/lib/ufo/concerns/autoscaling.rb +11 -0
  112. data/lib/ufo/concerns/names.rb +9 -0
  113. data/lib/ufo/concerns.rb +26 -0
  114. data/lib/ufo/config/inits.rb +13 -0
  115. data/lib/ufo/config.rb +187 -0
  116. data/lib/ufo/core.rb +32 -44
  117. data/lib/ufo/docker/builder.rb +44 -40
  118. data/lib/ufo/docker/cleaner.rb +9 -12
  119. data/lib/ufo/docker/compiler.rb +10 -4
  120. data/lib/ufo/docker/concerns.rb +7 -0
  121. data/lib/ufo/docker/dockerfile.rb +13 -9
  122. data/lib/ufo/docker/pusher.rb +13 -25
  123. data/lib/ufo/docker/state.rb +63 -0
  124. data/lib/ufo/ecr/auth.rb +8 -7
  125. data/lib/ufo/ecr/cleaner.rb +10 -14
  126. data/lib/ufo/ext/core/module.rb +31 -0
  127. data/lib/ufo/ext/core/nil_class.rb +11 -0
  128. data/lib/ufo/ext.rb +2 -0
  129. data/lib/ufo/{role → iam_role}/builder.rb +1 -1
  130. data/lib/ufo/{role → iam_role}/dsl.rb +8 -2
  131. data/lib/ufo/{role → iam_role}/registry.rb +1 -1
  132. data/lib/ufo/info.rb +22 -4
  133. data/lib/ufo/layering/layer.rb +95 -0
  134. data/lib/ufo/layering.rb +23 -0
  135. data/lib/ufo/log_group.rb +18 -10
  136. data/lib/ufo/logger/formatter.rb +13 -0
  137. data/lib/ufo/logger.rb +32 -0
  138. data/lib/ufo/names.rb +69 -0
  139. data/lib/ufo/param.rb +2 -1
  140. data/lib/ufo/task_definition/builder.rb +7 -0
  141. data/lib/ufo/task_definition/context.rb +45 -0
  142. data/lib/ufo/task_definition/erb/base.rb +18 -0
  143. data/lib/ufo/task_definition/erb/json.rb +28 -0
  144. data/lib/ufo/task_definition/erb/yaml.rb +18 -0
  145. data/lib/ufo/task_definition/erb.rb +78 -0
  146. data/lib/ufo/task_definition/helpers/aws_data_helper.rb +18 -0
  147. data/lib/ufo/task_definition/helpers/core.rb +50 -0
  148. data/lib/ufo/task_definition/helpers/ssm/fetcher.rb +39 -0
  149. data/lib/ufo/task_definition/helpers/ssm.rb +8 -0
  150. data/lib/ufo/task_definition/helpers/stack_output.rb +23 -0
  151. data/lib/ufo/{dsl/helper → task_definition/helpers}/vars.rb +40 -19
  152. data/lib/ufo/task_definition/helpers/vpc.rb +48 -0
  153. data/lib/ufo/task_definition/helpers.rb +5 -0
  154. data/lib/ufo/task_definition.rb +19 -0
  155. data/lib/ufo/upgrade/upgrade3.rb +1 -1
  156. data/lib/ufo/upgrade/upgrade4.rb +3 -3
  157. data/lib/ufo/utils/execute.rb +30 -0
  158. data/lib/ufo/utils/logging.rb +7 -0
  159. data/lib/ufo/utils/pretty.rb +18 -0
  160. data/lib/ufo/utils/squeezer.rb +1 -1
  161. data/lib/ufo/utils/sure.rb +23 -0
  162. data/lib/ufo/version.rb +1 -1
  163. data/lib/ufo/yaml/loader.rb +48 -0
  164. data/lib/ufo/yaml/validator.rb +51 -0
  165. data/lib/ufo/yaml.rb +13 -0
  166. data/lib/ufo.rb +12 -2
  167. data/spec/spec_helper.rb +4 -26
  168. data/spec/{lib → ufo}/ecr_auth_spec.rb +0 -0
  169. data/spec/{lib → ufo}/ecr_cleaner_spec.rb +0 -2
  170. data/spec/{lib/role → ufo/iam_role}/builder_spec.rb +5 -5
  171. data/spec/{lib/role → ufo/iam_role}/dsl_spec.rb +3 -3
  172. data/spec/{lib → ufo}/logs_spec.rb +2 -2
  173. data/ufo.gemspec +9 -3
  174. metadata +244 -341
  175. data/.circleci/bin/commit_docs.sh +0 -26
  176. data/.circleci/config.yml +0 -78
  177. data/.gitmodules +0 -0
  178. data/docs/.gitignore +0 -5
  179. data/docs/CNAME +0 -1
  180. data/docs/Gemfile +0 -4
  181. data/docs/LICENSE +0 -21
  182. data/docs/README.md +0 -20
  183. data/docs/_config.yml +0 -75
  184. data/docs/_docs/aws-ecs-task-execution-role.md +0 -28
  185. data/docs/_docs/conventions.md +0 -47
  186. data/docs/_docs/extras/codebuild-iam-role.md +0 -46
  187. data/docs/_docs/extras/dockerfile-erb.md +0 -60
  188. data/docs/_docs/extras/ecs-network-mode.md +0 -37
  189. data/docs/_docs/extras/load-balancer.md +0 -83
  190. data/docs/_docs/extras/minimal-deploy-iam.md +0 -79
  191. data/docs/_docs/extras/notification-arns.md +0 -21
  192. data/docs/_docs/extras/redirection-support.md +0 -27
  193. data/docs/_docs/extras/route53-support.md +0 -27
  194. data/docs/_docs/extras/security-groups.md +0 -36
  195. data/docs/_docs/extras/ssl-support.md +0 -20
  196. data/docs/_docs/faq.md +0 -100
  197. data/docs/_docs/fargate.md +0 -5
  198. data/docs/_docs/helpers.md +0 -24
  199. data/docs/_docs/iam-roles.md +0 -112
  200. data/docs/_docs/install.md +0 -25
  201. data/docs/_docs/more/auto-completion.md +0 -24
  202. data/docs/_docs/more/automated-cleanup.md +0 -14
  203. data/docs/_docs/more/customize-cloudformation.md +0 -35
  204. data/docs/_docs/more/migrations.md +0 -25
  205. data/docs/_docs/more/run-in-pieces.md +0 -30
  206. data/docs/_docs/more/single-task.md +0 -25
  207. data/docs/_docs/more/stuck-cloudformation.md +0 -29
  208. data/docs/_docs/more/why-cloudformation.md +0 -21
  209. data/docs/_docs/next-steps.md +0 -16
  210. data/docs/_docs/quick-start-ec2.md +0 -86
  211. data/docs/_docs/secrets.md +0 -135
  212. data/docs/_docs/settings/aws_profile.md +0 -36
  213. data/docs/_docs/settings/cfn.md +0 -12
  214. data/docs/_docs/settings/cluster.md +0 -66
  215. data/docs/_docs/settings/manage-security-groups.md +0 -24
  216. data/docs/_docs/settings/network.md +0 -45
  217. data/docs/_docs/settings.md +0 -55
  218. data/docs/_docs/ssl_errors.md +0 -40
  219. data/docs/_docs/structure.md +0 -41
  220. data/docs/_docs/tutorial-ufo-docker-build.md +0 -61
  221. data/docs/_docs/tutorial-ufo-init.md +0 -86
  222. data/docs/_docs/tutorial-ufo-ship.md +0 -95
  223. data/docs/_docs/tutorial-ufo-ships.md +0 -38
  224. data/docs/_docs/tutorial-ufo-tasks-build.md +0 -177
  225. data/docs/_docs/tutorial.md +0 -14
  226. data/docs/_docs/ufo-current.md +0 -49
  227. data/docs/_docs/ufo-env-extra.md +0 -22
  228. data/docs/_docs/ufo-env.md +0 -46
  229. data/docs/_docs/ufo-logs.md +0 -49
  230. data/docs/_docs/ufo-task-params.md +0 -43
  231. data/docs/_docs/ufo-tasks-register.md +0 -21
  232. data/docs/_docs/upgrading/upgrade4.5.md +0 -52
  233. data/docs/_docs/upgrading/upgrade4.md +0 -48
  234. data/docs/_docs/upgrading/upgrade5.md +0 -19
  235. data/docs/_docs/upgrading.md +0 -13
  236. data/docs/_docs/variables.md +0 -55
  237. data/docs/_includes/about.html +0 -19
  238. data/docs/_includes/banner/foot.html +0 -2
  239. data/docs/_includes/banner/head.html +0 -5
  240. data/docs/_includes/cfn-customize.md +0 -53
  241. data/docs/_includes/commands.html +0 -80
  242. data/docs/_includes/contact.html +0 -17
  243. data/docs/_includes/contact_disqus.html +0 -16
  244. data/docs/_includes/contact_static.html +0 -17
  245. data/docs/_includes/content.html +0 -26
  246. data/docs/_includes/css/bootstrap.min.css +0 -7
  247. data/docs/_includes/css/main.css +0 -501
  248. data/docs/_includes/css/quotes.css +0 -102
  249. data/docs/_includes/css/syntax.css +0 -65
  250. data/docs/_includes/css/table.css +0 -53
  251. data/docs/_includes/css/timeline.css +0 -201
  252. data/docs/_includes/css/ufo.css +0 -218
  253. data/docs/_includes/edit-on-github.html +0 -11
  254. data/docs/_includes/example.html +0 -63
  255. data/docs/_includes/footer.html +0 -44
  256. data/docs/_includes/google_analytics.html +0 -10
  257. data/docs/_includes/head.html +0 -32
  258. data/docs/_includes/header.html +0 -15
  259. data/docs/_includes/js.html +0 -32
  260. data/docs/_includes/js_disqus.html +0 -21
  261. data/docs/_includes/modals.html +0 -40
  262. data/docs/_includes/nav.html +0 -27
  263. data/docs/_includes/prev_next.md +0 -19
  264. data/docs/_includes/quotes.html +0 -19
  265. data/docs/_includes/reference.md +0 -5
  266. data/docs/_includes/repo_push_access.md +0 -11
  267. data/docs/_includes/subnav.html +0 -78
  268. data/docs/_includes/summary.html +0 -22
  269. data/docs/_includes/ufo-ship-options.md +0 -12
  270. data/docs/_includes/uses.html +0 -19
  271. data/docs/_layouts/default.html +0 -13
  272. data/docs/_layouts/style.css +0 -6
  273. data/docs/_reference/ufo-apps.md +0 -37
  274. data/docs/_reference/ufo-cancel.md +0 -24
  275. data/docs/_reference/ufo-completion.md +0 -46
  276. data/docs/_reference/ufo-completion_script.md +0 -27
  277. data/docs/_reference/ufo-current.md +0 -93
  278. data/docs/_reference/ufo-deploy.md +0 -76
  279. data/docs/_reference/ufo-destroy.md +0 -36
  280. data/docs/_reference/ufo-docker-base.md +0 -71
  281. data/docs/_reference/ufo-docker-build.md +0 -91
  282. data/docs/_reference/ufo-docker-clean.md +0 -44
  283. data/docs/_reference/ufo-docker-compile.md +0 -19
  284. data/docs/_reference/ufo-docker-help.md +0 -15
  285. data/docs/_reference/ufo-docker-name.md +0 -37
  286. data/docs/_reference/ufo-docker-push.md +0 -49
  287. data/docs/_reference/ufo-docker.md +0 -38
  288. data/docs/_reference/ufo-init.md +0 -125
  289. data/docs/_reference/ufo-logs.md +0 -40
  290. data/docs/_reference/ufo-network-help.md +0 -15
  291. data/docs/_reference/ufo-network-init.md +0 -39
  292. data/docs/_reference/ufo-network.md +0 -26
  293. data/docs/_reference/ufo-ps.md +0 -56
  294. data/docs/_reference/ufo-releases.md +0 -40
  295. data/docs/_reference/ufo-resources.md +0 -44
  296. data/docs/_reference/ufo-rollback.md +0 -61
  297. data/docs/_reference/ufo-scale.md +0 -50
  298. data/docs/_reference/ufo-ship.md +0 -129
  299. data/docs/_reference/ufo-ships.md +0 -68
  300. data/docs/_reference/ufo-status.md +0 -23
  301. data/docs/_reference/ufo-stop.md +0 -31
  302. data/docs/_reference/ufo-task.md +0 -56
  303. data/docs/_reference/ufo-tasks-build.md +0 -178
  304. data/docs/_reference/ufo-tasks-help.md +0 -15
  305. data/docs/_reference/ufo-tasks-register.md +0 -29
  306. data/docs/_reference/ufo-tasks.md +0 -35
  307. data/docs/_reference/ufo-upgrade-help.md +0 -15
  308. data/docs/_reference/ufo-upgrade-v2to3.md +0 -15
  309. data/docs/_reference/ufo-upgrade-v33to34.md +0 -15
  310. data/docs/_reference/ufo-upgrade-v3to4.md +0 -27
  311. data/docs/_reference/ufo-upgrade-v43to45.md +0 -15
  312. data/docs/_reference/ufo-upgrade.md +0 -29
  313. data/docs/_reference/ufo-version.md +0 -23
  314. data/docs/articles.md +0 -14
  315. data/docs/bin/web +0 -4
  316. data/docs/css/font-awesome/css/font-awesome.css +0 -1566
  317. data/docs/css/font-awesome/css/font-awesome.min.css +0 -4
  318. data/docs/css/font-awesome/fonts/FontAwesome.otf +0 -0
  319. data/docs/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  320. data/docs/css/font-awesome/fonts/fontawesome-webfont.svg +0 -504
  321. data/docs/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  322. data/docs/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  323. data/docs/docs.md +0 -29
  324. data/docs/img/docs/cloudformation-resources.png +0 -0
  325. data/docs/img/logos/boltops-logo-full.png +0 -0
  326. data/docs/img/logos/boltops-logo.png +0 -0
  327. data/docs/img/logos/ufo-logo-2.png +0 -0
  328. data/docs/img/logos/ufo-logo.png +0 -0
  329. data/docs/img/logos/ufo-site-header.png +0 -0
  330. data/docs/img/logos/ufo.jpg +0 -0
  331. data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
  332. data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
  333. data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
  334. data/docs/index.html +0 -10
  335. data/docs/js/bootstrap.js +0 -2114
  336. data/docs/js/bootstrap.min.js +0 -6
  337. data/docs/js/cbpAnimatedHeader.js +0 -44
  338. data/docs/js/cbpAnimatedHeader.min.js +0 -11
  339. data/docs/js/classie.js +0 -80
  340. data/docs/js/contact_me.js +0 -70
  341. data/docs/js/contact_me_static.js +0 -23
  342. data/docs/js/freelancer.js +0 -37
  343. data/docs/js/jqBootstrapValidation.js +0 -912
  344. data/docs/js/jquery-1.11.0.js +0 -4
  345. data/docs/js/jquery.easing.min.js +0 -44
  346. data/docs/js/nav.js +0 -53
  347. data/docs/quick-start.md +0 -133
  348. data/docs/reference.md +0 -29
  349. data/docs/style.css +0 -3
  350. data/docs/utils/ssl-doctor.rb +0 -89
  351. data/docs/utils/test-aws-api-access.rb +0 -11
  352. data/docs/utils/update-cert-chains.sh +0 -11
  353. data/lib/template/.env +0 -3
  354. data/lib/template/.secrets +0 -5
  355. data/lib/template/.ufo/iam_roles/execution_role.rb +0 -7
  356. data/lib/template/.ufo/iam_roles/task_role.rb +0 -21
  357. data/lib/template/.ufo/params.yml.tt +0 -27
  358. data/lib/template/.ufo/settings/cfn/default.yml.tt +0 -72
  359. data/lib/template/.ufo/settings/network/default.yml.tt +0 -26
  360. data/lib/template/.ufo/settings.yml.tt +0 -26
  361. data/lib/template/.ufo/task_definitions.rb.tt +0 -61
  362. data/lib/template/.ufo/templates/fargate.json.erb +0 -39
  363. data/lib/template/.ufo/templates/main.json.erb +0 -43
  364. data/lib/template/.ufo/variables/base.rb.tt +0 -19
  365. data/lib/template/.ufo/variables/development.rb +0 -8
  366. data/lib/template/.ufo/variables/production.rb +0 -7
  367. data/lib/template/Dockerfile +0 -15
  368. data/lib/template/bin/deploy.tt +0 -7
  369. data/lib/ufo/apps/cfn_map.rb +0 -70
  370. data/lib/ufo/apps/cluster.rb +0 -24
  371. data/lib/ufo/apps/service.rb +0 -56
  372. data/lib/ufo/apps.rb +0 -56
  373. data/lib/ufo/aws_service.rb +0 -36
  374. data/lib/ufo/base.rb +0 -35
  375. data/lib/ufo/cancel.rb +0 -23
  376. data/lib/ufo/current.rb +0 -104
  377. data/lib/ufo/default/settings.yml +0 -24
  378. data/lib/ufo/default/templates/main.json.erb +0 -39
  379. data/lib/ufo/destroy.rb +0 -41
  380. data/lib/ufo/docker/variables.rb +0 -26
  381. data/lib/ufo/dsl/helper.rb +0 -79
  382. data/lib/ufo/dsl/outputter.rb +0 -43
  383. data/lib/ufo/dsl/task_definition.rb +0 -108
  384. data/lib/ufo/dsl.rb +0 -96
  385. data/lib/ufo/help/apps.md +0 -12
  386. data/lib/ufo/help/balancer.md +0 -3
  387. data/lib/ufo/help/completions.md +0 -16
  388. data/lib/ufo/help/completions_script.md +0 -1
  389. data/lib/ufo/help/current.md +0 -65
  390. data/lib/ufo/help/deploy.md +0 -38
  391. data/lib/ufo/help/destroy.md +0 -9
  392. data/lib/ufo/help/docker/base.md +0 -49
  393. data/lib/ufo/help/docker/name.md +0 -16
  394. data/lib/ufo/help/docker.md +0 -6
  395. data/lib/ufo/help/init.md +0 -91
  396. data/lib/ufo/help/network/init.md +0 -13
  397. data/lib/ufo/help/ps.md +0 -27
  398. data/lib/ufo/help/releases.md +0 -16
  399. data/lib/ufo/help/resources.md +0 -20
  400. data/lib/ufo/help/rollback.md +0 -35
  401. data/lib/ufo/help/scale.md +0 -26
  402. data/lib/ufo/help/ship.md +0 -95
  403. data/lib/ufo/help/ships.md +0 -35
  404. data/lib/ufo/help/stop.md +0 -7
  405. data/lib/ufo/help/task.md +0 -27
  406. data/lib/ufo/help/tasks/build.md +0 -158
  407. data/lib/ufo/help/tasks/register.md +0 -14
  408. data/lib/ufo/help/tasks.md +0 -7
  409. data/lib/ufo/help/upgrade/v3to4.md +0 -3
  410. data/lib/ufo/help.rb +0 -9
  411. data/lib/ufo/init.rb +0 -119
  412. data/lib/ufo/network/fetch.rb +0 -48
  413. data/lib/ufo/network/helper.rb +0 -23
  414. data/lib/ufo/network/init.rb +0 -26
  415. data/lib/ufo/network.rb +0 -21
  416. data/lib/ufo/ps.rb +0 -129
  417. data/lib/ufo/scale.rb +0 -28
  418. data/lib/ufo/setting/profile.rb +0 -44
  419. data/lib/ufo/setting/security_groups.rb +0 -22
  420. data/lib/ufo/setting.rb +0 -75
  421. data/lib/ufo/settings.rb +0 -20
  422. data/lib/ufo/ship.rb +0 -103
  423. data/lib/ufo/stack/builder/conditions.rb +0 -23
  424. data/lib/ufo/stack/builder/parameters.rb +0 -45
  425. data/lib/ufo/stack/builder/resources/base.rb +0 -4
  426. data/lib/ufo/stack/builder/resources/dns.rb +0 -17
  427. data/lib/ufo/stack/builder/resources/elb.rb +0 -45
  428. data/lib/ufo/stack/builder/resources/listener.rb +0 -42
  429. data/lib/ufo/stack/builder/resources/listener_ssl.rb +0 -16
  430. data/lib/ufo/stack/builder/resources/roles/base.rb +0 -22
  431. data/lib/ufo/stack/builder/resources/roles/execution_role.rb +0 -4
  432. data/lib/ufo/stack/builder/resources/roles/task_role.rb +0 -4
  433. data/lib/ufo/stack/builder/resources/security_group/base.rb +0 -4
  434. data/lib/ufo/stack/builder/resources.rb +0 -20
  435. data/lib/ufo/stack/builder.rb +0 -26
  436. data/lib/ufo/stack/context.rb +0 -253
  437. data/lib/ufo/stack/helper.rb +0 -55
  438. data/lib/ufo/stack/template_body.rb +0 -13
  439. data/lib/ufo/stack.rb +0 -213
  440. data/lib/ufo/status.rb +0 -56
  441. data/lib/ufo/stop.rb +0 -49
  442. data/lib/ufo/task.rb +0 -225
  443. data/lib/ufo/tasks/builder.rb +0 -40
  444. data/lib/ufo/tasks/register.rb +0 -90
  445. data/lib/ufo/template_scope.rb +0 -57
  446. data/lib/ufo/util.rb +0 -69
  447. data/spec/lib/apps_spec.rb +0 -20
  448. data/spec/lib/builder_spec.rb +0 -23
  449. data/spec/lib/cli_spec.rb +0 -73
  450. data/spec/lib/completion_spec.rb +0 -18
  451. data/spec/lib/ps_spec.rb +0 -14
  452. data/spec/lib/register_spec.rb +0 -49
  453. data/spec/lib/setting_spec.rb +0 -18
  454. data/spec/lib/ship_spec.rb +0 -46
  455. data/spec/lib/stack/status_spec.rb +0 -76
  456. data/spec/lib/stop_spec.rb +0 -13
  457. data/spec/lib/task_spec.rb +0 -54
data/lib/ufo/setting.rb DELETED
@@ -1,75 +0,0 @@
1
- require 'yaml'
2
-
3
- module Ufo
4
- class Setting
5
- extend Memoist
6
- def initialize(check_ufo_project=true)
7
- @check_ufo_project = check_ufo_project
8
- end
9
-
10
- # data contains the settings.yml config. The order or precedence for settings
11
- # is the project ufo/settings.yml and then the ~/.ufo/settings.yml.
12
- def data
13
- if @check_ufo_project && !File.exist?(project_settings_path)
14
- Ufo.check_ufo_project!
15
- end
16
-
17
- # project based settings files
18
- project = load_file(project_settings_path)
19
-
20
- user_file = "#{ENV['HOME']}/.ufo/settings.yml"
21
- user = File.exist?(user_file) ? YAML.load_file(user_file) : {}
22
-
23
- default_file = File.expand_path("../default/settings.yml", __FILE__)
24
- default = load_file(default_file)
25
-
26
- all_envs = default.deep_merge(user.deep_merge(project))
27
- all_envs = merge_base(all_envs)
28
- data = all_envs[ufo_env] || all_envs["base"] || {}
29
- data.deep_symbolize_keys
30
- end
31
- memoize :data
32
-
33
- # Resovles infinite problem since Ufo.env can be determined from UFO_ENV or settings.yml files.
34
- # When ufo is determined from settings it should not called Ufo.env since that in turn calls
35
- # Settings.new.data which can then cause an infinite loop.
36
- def ufo_env
37
- settings = YAML.load_file("#{Ufo.root}/.ufo/settings.yml")
38
- env = settings.find do |_env, section|
39
- section ||= {}
40
- ENV['AWS_PROFILE'] && ENV['AWS_PROFILE'] == section['aws_profile']
41
- end
42
-
43
- ufo_env = env.first if env
44
- ufo_env = ENV['UFO_ENV'] if ENV['UFO_ENV'] # highest precedence
45
- ufo_env || 'development'
46
- end
47
-
48
- private
49
- def load_file(path)
50
- return Hash.new({}) unless File.exist?(path)
51
-
52
- content = RenderMePretty.result(path)
53
- data = YAML.load(content)
54
- # If key is is accidentally set to nil it screws up the merge_base later.
55
- # So ensure that all keys with nil value are set to {}
56
- data.each do |env, _setting|
57
- data[env] ||= {}
58
- end
59
- data
60
- end
61
-
62
- # automatically add base settings to the rest of the environments
63
- def merge_base(all_envs)
64
- base = all_envs["base"] || {}
65
- all_envs.each do |env, settings|
66
- all_envs[env] = base.merge(settings) unless env == "base"
67
- end
68
- all_envs
69
- end
70
-
71
- def project_settings_path
72
- "#{Ufo.root}/.ufo/settings.yml"
73
- end
74
- end
75
- end
data/lib/ufo/settings.rb DELETED
@@ -1,20 +0,0 @@
1
- module Ufo
2
- module Settings
3
- extend Memoist
4
-
5
- def network
6
- Ufo::Setting::Profile.new(:network, settings[:network_profile]).data
7
- end
8
- memoize :network
9
-
10
- def cfn
11
- Ufo::Setting::Profile.new(:cfn, settings[:cfn_profile]).data
12
- end
13
- memoize :cfn
14
-
15
- def settings
16
- Setting.new.data
17
- end
18
- memoize :settings
19
- end
20
- end
data/lib/ufo/ship.rb DELETED
@@ -1,103 +0,0 @@
1
- module Ufo
2
- class UfoError < RuntimeError; end
3
- class ShipmentOverridden < UfoError; end
4
-
5
- class Ship < Base
6
- def initialize(service, options={})
7
- super
8
- @task_definition = options[:task_definition]
9
- end
10
-
11
- def deploy
12
- message = "Deploying service #{@service.color(:green)} to cluster #{@cluster.color(:green)}..."
13
- unless @options[:mute]
14
- if @options[:noop]
15
- puts "NOOP: #{message}"
16
- return
17
- else
18
- puts message
19
- end
20
- end
21
-
22
- ensure_log_group_exist
23
- ensure_cluster_exist
24
- stop_old_tasks if @options[:stop_old_tasks]
25
- success = deploy_stack
26
-
27
- return if @options[:mute] || !@options[:wait]
28
- if success
29
- puts "Software shipped!"
30
- else
31
- puts "Software fail to ship."
32
- exit 1
33
- end
34
- end
35
-
36
- # Start a thread that will poll for ecs deployments and kill of tasks
37
- # in old deployments.
38
- # This must be done in a thread because the stack update process is blocking.
39
- def stop_old_tasks
40
- # only works when deployment is blocking
41
- return unless @options[:wait]
42
-
43
- Thread.new do
44
- stop = Ufo::Stop.new(@service, @options.merge(mute: true))
45
- while true
46
- stop.log "checking for old tasks and waiting for 10 seconds"
47
- stop.run
48
- sleep 10
49
- end
50
- end
51
- end
52
-
53
- def ensure_log_group_exist
54
- LogGroup.new(@task_definition, @options).create
55
- end
56
-
57
- def deploy_stack
58
- options = @options.merge(
59
- service: @service,
60
- task_definition: @task_definition,
61
- )
62
- stack = Stack.new(options)
63
- stack.deploy
64
- end
65
-
66
- def show_aws_cli_command(action, params)
67
- puts "Equivalent aws cli command:"
68
- # Use .ufo/data instead of .ufo/output because output files all get looped
69
- # through as part of `ufo tasks register`
70
- rel_path = ".ufo/data/#{action}-params.json"
71
- output_path = "#{Ufo.root}/#{rel_path}"
72
- FileUtils.rm_f(output_path)
73
-
74
- # Thanks: https://www.mnishiguchi.com/2017/11/29/rails-hash-camelize-and-underscore-keys/
75
- params = params.deep_transform_keys { |key| key.to_s.camelize(:lower) }
76
- json = JSON.pretty_generate(params)
77
- IO.write(output_path, json)
78
-
79
- file_path = "file://#{rel_path}"
80
- puts " aws ecs #{action}-service --cli-input-json #{file_path}".color(:green)
81
- end
82
-
83
- def ensure_cluster_exist
84
- cluster = ecs_clusters.first
85
- unless cluster && cluster.status == "ACTIVE"
86
- message = "#{@cluster} cluster created."
87
- if @options[:noop]
88
- message = "NOOP #{message}"
89
- else
90
- ecs.create_cluster(cluster_name: @cluster)
91
- # TODO: Add Waiter logic, sometimes the cluster does not exist by the time
92
- # we create the service
93
- end
94
-
95
- puts message unless @options[:mute]
96
- end
97
- end
98
-
99
- def ecs_clusters
100
- ecs.describe_clusters(clusters: [@cluster]).clusters
101
- end
102
- end
103
- end
@@ -1,23 +0,0 @@
1
- class Ufo::Stack::Builder
2
- class Conditions < Base
3
- def build
4
- {
5
- CreateElbIsTrue: {
6
- "Fn::Equals": [{Ref: "CreateElb"}, true]
7
- },
8
- ElbTargetGroupIsBlank: {
9
- "Fn::Equals": [{Ref: "ElbTargetGroup"}, ""]
10
- },
11
- CreateTargetGroupIsTrue: {
12
- "Fn::And": [
13
- {Condition: "CreateElbIsTrue"},
14
- {Condition: "ElbTargetGroupIsBlank"},
15
- ]
16
- },
17
- EcsDesiredCountIsBlank: {
18
- "Fn::Equals": [{Ref: "EcsDesiredCount"}, ""]
19
- }
20
- }
21
- end
22
- end
23
- end
@@ -1,45 +0,0 @@
1
- class Ufo::Stack::Builder
2
- class Parameters < Base
3
- def build
4
- {
5
- "Vpc": {
6
- "Description": "Existing vpc id",
7
- "Type": "AWS::EC2::VPC::Id"
8
- },
9
- "ElbSubnets": {
10
- "Description": "Existing subnet ids for ELB",
11
- "Type": "List<AWS::EC2::Subnet::Id>"
12
- },
13
- "EcsSubnets": {
14
- "Description": "Existing subnet ids for ECS",
15
- "Type": "List<AWS::EC2::Subnet::Id>"
16
- },
17
- "ElbTargetGroup": {
18
- "Description": "Existing target group",
19
- "Type": "String",
20
- "Default": ""
21
- },
22
- "CreateElb": {
23
- "Description": "Create elb",
24
- "Type": "String",
25
- "Default": true
26
- },
27
- "EcsDesiredCount": {
28
- "Description": "Ecs desired count",
29
- "Type": "String",
30
- "Default": 1
31
- },
32
- "ElbEipIds": {
33
- "Description": "ELB EIP Allocation ids to use for network load balancer",
34
- "Type": "String",
35
- "Default": ""
36
- },
37
- "EcsSchedulingStrategy": {
38
- "Description": "The scheduling strategy to use for the service",
39
- "Type": "String",
40
- "Default": "REPLICA"
41
- }
42
- }
43
- end
44
- end
45
- end
@@ -1,4 +0,0 @@
1
- class Ufo::Stack::Builder::Resources
2
- class Base < Ufo::Stack::Builder::Base
3
- end
4
- end
@@ -1,17 +0,0 @@
1
- class Ufo::Stack::Builder::Resources
2
- class Dns < Base
3
- def build
4
- return unless @create_route53
5
-
6
- {
7
- Type: "AWS::Route53::RecordSet",
8
- Properties: {
9
- Comment: "cname to load balancer",
10
- Type: "CNAME",
11
- TTL: 60, # ttl has special casing
12
- ResourceRecords: [{"Fn::GetAtt": "Elb.DNSName"}]
13
- }
14
- }
15
- end
16
- end
17
- end
@@ -1,45 +0,0 @@
1
- class Ufo::Stack::Builder::Resources
2
- class Elb < Base
3
- def build
4
- {
5
- Type: "AWS::ElasticLoadBalancingV2::LoadBalancer",
6
- Condition: "CreateElbIsTrue",
7
- Properties: properties,
8
- }
9
- end
10
-
11
- def properties
12
- props = {
13
- Type: @elb_type,
14
- Tags: [
15
- {Key: "Name", Value: @stack_name}
16
- ],
17
- Subnets: {Ref: "ElbSubnets"},
18
- Scheme: "internet-facing"
19
- }
20
-
21
- props[:SecurityGroups] = security_groups(:elb) if @elb_type == "application"
22
- subnets(props)
23
-
24
- props
25
- end
26
-
27
- def subnets(props)
28
- mappings = @elb_type == "network" && @subnet_mappings && !@subnet_mappings.empty?
29
- if mappings
30
- props[:SubnetMappings] = subnet_mappings
31
- else
32
- props[:Subnets] = {Ref: "ElbSubnets"}
33
- end
34
- end
35
-
36
- def subnet_mappings
37
- @subnet_mappings.map do |allocation_id, subnet_id|
38
- {
39
- AllocationId: allocation_id,
40
- SubnetId: subnet_id,
41
- }
42
- end
43
- end
44
- end
45
- end
@@ -1,42 +0,0 @@
1
- class Ufo::Stack::Builder::Resources
2
- class Listener < Base
3
- def build
4
- {
5
- Type: "AWS::ElasticLoadBalancingV2::Listener",
6
- Condition: "CreateElbIsTrue",
7
- Properties: properties,
8
- }
9
- end
10
-
11
- def properties
12
- props = {
13
- DefaultActions: [
14
- {
15
- Type: "forward",
16
- TargetGroupArn: {
17
- "Fn::If": [
18
- "ElbTargetGroupIsBlank",
19
- {Ref: "TargetGroup"},
20
- {Ref: "ElbTargetGroup"}
21
- ]
22
- }
23
- }
24
- ],
25
- LoadBalancerArn: {Ref: "Elb"},
26
- Protocol: protocol,
27
- }
28
-
29
- props[:Port] = port if port
30
-
31
- props
32
- end
33
-
34
- def protocol
35
- @default_listener_protocol
36
- end
37
-
38
- def port
39
- 80
40
- end
41
- end
42
- end
@@ -1,16 +0,0 @@
1
- class Ufo::Stack::Builder::Resources
2
- class ListenerSsl < Listener
3
- def build
4
- return unless @create_listener_ssl
5
- super
6
- end
7
-
8
- def protocol
9
- @default_listener_ssl_protocol
10
- end
11
-
12
- # nil on purpose
13
- def port
14
- end
15
- end
16
- end
@@ -1,22 +0,0 @@
1
- module Ufo::Stack::Builder::Resources::Roles
2
- class Base < Ufo::Stack::Builder::Base
3
- def build
4
- return unless self.class.build? # important because it runs DSL#evaluate
5
- Ufo::Role::Builder.new(self.class.role_type).build
6
- end
7
-
8
-
9
- class << self
10
- def role_type
11
- self.name.to_s.split("::").last.underscore
12
- end
13
-
14
- def build?
15
- path = "#{Ufo.root}/.ufo/iam_roles/#{role_type}.rb"
16
- return unless File.exist?(path)
17
- Ufo::Role::DSL.new(path).evaluate # runs the role.rb and registers items
18
- Ufo::Role::Builder.new(role_type).build?
19
- end
20
- end
21
- end
22
- end
@@ -1,4 +0,0 @@
1
- module Ufo::Stack::Builder::Resources::Roles
2
- class ExecutionRole < Base
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module Ufo::Stack::Builder::Resources::Roles
2
- class TaskRole < Base
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module Ufo::Stack::Builder::Resources::SecurityGroup
2
- class Base < Ufo::Stack::Builder::Base
3
- end
4
- end
@@ -1,20 +0,0 @@
1
- class Ufo::Stack::Builder
2
- class Resources < Base
3
- def build
4
- {
5
- Dns: Dns.build,
6
- Ecs: Ecs.build,
7
- EcsSecurityGroup: SecurityGroup::Ecs.build,
8
- EcsSecurityGroupRule: SecurityGroup::EcsRule.build,
9
- Elb: Elb.build,
10
- ElbSecurityGroup: SecurityGroup::Elb.build,
11
- ExecutionRole: Roles::ExecutionRole.build,
12
- Listener: Listener.build,
13
- ListenerSsl: ListenerSsl.build,
14
- TargetGroup: TargetGroup.build,
15
- TaskDefinition: TaskDefinition.build,
16
- TaskRole: Roles::TaskRole.build,
17
- }
18
- end
19
- end
20
- end
@@ -1,26 +0,0 @@
1
- class Ufo::Stack
2
- class Builder
3
- class_attribute :context
4
-
5
- def initialize(context)
6
- @context = context
7
- # This builder class is really used as a singleton.
8
- # To avoid having to pass context to all the builder classes.
9
- self.class.context = @context
10
- @template = {
11
- Description: "Ufo ECS stack #{context.stack_name}",
12
- }
13
- end
14
-
15
- def build
16
- @template[:Parameters] = Parameters.new.build
17
- @template[:Conditions] = Conditions.new.build
18
- @template[:Resources] = Resources.new.build
19
- @template[:Outputs] = Outputs.new.build
20
- @template.deep_stringify_keys!
21
- @template = Ufo::Utils::Squeezer.new(@template).squeeze
22
- @template = CustomProperties.new(@template, @context.stack_name).apply
23
- YAML.dump(@template)
24
- end
25
- end
26
- end