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
@@ -1,11 +0,0 @@
1
- # usage 'ruby s3-cert-chain-test.rb'
2
- # see: https://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/quick-start-guide.html
3
-
4
- require 'aws-sdk-s3' # v2: require 'aws-sdk'
5
- #Aws.use_bundled_cert!
6
-
7
- s3 = Aws::S3::Resource.new(region: 'us-east-1')
8
-
9
- s3.buckets.limit(50).each do |b|
10
- puts "#{b.name}"
11
- end
@@ -1,11 +0,0 @@
1
- #!/bin/bash
2
-
3
- cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE' 2>/dev/null)
4
- echo 'What is the uri to your organizations root certificate chain?'
5
- read -p 'org_root_chain: ' org_root_chain
6
- echo "$org_root_chain"
7
- curl "$org_root_chain" -o org_chain.txt
8
- cat org_chain.txt >> "$cert_file"
9
- mkdir -p "${cert_file%/*}"
10
- security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
11
- security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
data/lib/template/.env DELETED
@@ -1,3 +0,0 @@
1
- # fine to have comment in this file
2
- ADMIN_PASSWORD=secret
3
- DATABASE_URL=mysql2://user:pass@domain.com:3306/dbname # comment can be at the end too
@@ -1,5 +0,0 @@
1
- # Example starter secrets file. Be sure that the SSM parameters or Secrets exist.
2
- # Docs: https://ufoships.com/docs/secrets/
3
- #
4
- # NAME1=SSM:parameter_name
5
- # NAME2=SECRETSMANAGER:secret_name-AbCdEf
@@ -1,7 +0,0 @@
1
- # Example starter execution role. Add the iam role permissions that the host needs here:
2
- #
3
- # More docs: https://ufoships.com/docs/iam-roles/
4
- #
5
- managed_iam_policy("AmazonSSMReadOnlyAccess")
6
- managed_iam_policy("SecretsManagerReadWrite")
7
- managed_iam_policy("service-role/AmazonECSTaskExecutionRolePolicy")
@@ -1,21 +0,0 @@
1
- # Example starter task role. Add the iam role permissions that the container needs here:
2
- #
3
- # More docs: https://ufoships.com/docs/iam-roles/
4
- #
5
- # Examples:
6
- #
7
- # iam_policy("AmazonS3ReadOnlyAccess",
8
- # Action: [
9
- # "s3:Get*",
10
- # "s3:List*"
11
- # ],
12
- # Effect: "Allow",
13
- # Resource: "*"
14
- # )
15
- # iam_policy("CloudwatchWrite",
16
- # Action: [
17
- # "cloudwatch:PutMetricData",
18
- # ],
19
- # Effect: "Allow",
20
- # Resource: "*"
21
- # )
@@ -1,27 +0,0 @@
1
- # These params are passsed to the corresponding aws-sdk ecs client methods.
2
- # AWS Docs example: https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECS/Client.html#run_task-instance_method
3
- #
4
- # The network helper provides access to the .ufo/settings/network/[PROFILE].yml
5
- #
6
- # More docs: http://ufoships.com/docs/params/
7
-
8
- # ufo task calls run_tasks.
9
- #
10
- # ufo task will assign these values appropriately based on the task
11
- # definition being ran. So generally you should you can leave these settings
12
- # alone.
13
- #
14
- # If it's a Fargate task definition, ufo task automatically adds the
15
- # network_configuration and launch_type: FARGATE
16
- # If it's a EC2 task definition with awsvpc network mode, ufo task
17
- # automatically adds the network_configuration and security groups using
18
- # the security groups from .ufo/settings/network/default.yml.
19
- #
20
- # run_task:
21
- # # network_configuration is required for FARGATE
22
- # network_configuration:
23
- # awsvpc_configuration:
24
- # subnets: <%%= network[:ecs_subnets].inspect %> # required
25
- # security_groups: <%%= network[:ecs_security_groups].inspect %>
26
- # # for fargate use: assign_public_ip: ENABLED
27
- # # assign_public_ip: ENABLED # accepts ENABLED, DISABLED
@@ -1,72 +0,0 @@
1
- ---
2
- # Options allow you to customize any resources that ufo creates with
3
- # CloudFormation. These options are inserting into the generated template.
4
- # More info: https://ufoships.com/docs/customize-cloudformation
5
-
6
- Elb:
7
- Scheme: internet-facing
8
-
9
- # https://docs.aws.amazon.com/fr_fr/elasticloadbalancing/latest/APIReference/API_CreateTargetGroup.html
10
- #
11
- # When using SSL with network elb, the target group protocol is usually http still
12
- # unless you also handle SSL termination at the app level.
13
- TargetGroup:
14
- Port: 80 # only used with ECS if awsvpc mode
15
- # Protocol: TCP # valid values - application elb: HTTP HTTPS, network elb: TCP
16
- # ufo sets defaults in cloudformation template
17
- # application elb: HTTP
18
- # network elb: TCP
19
- # so we can keep this commented out, unless we need HTTPS at the app level
20
- # Health check settings are supported by application load balancer only:
21
- # HealthCheckPath: /up # health check
22
- HealthCheckIntervalSeconds: 10 # default: 30. Network ELB can only take 10 or 30
23
- HealthyThresholdCount: 2
24
- UnhealthyThresholdCount: 2 # default: 10
25
- # HealthCheckProtocol: HTTP # HTTP or HTTPS
26
- # HealthCheckPort: traffic-port
27
- TargetGroupAttributes:
28
- - Key: deregistration_delay.timeout_seconds
29
- Value: 10
30
-
31
- # https://docs.aws.amazon.com/fr_fr/elasticloadbalancing/latest/APIReference/API_CreateListener.html
32
- #
33
- # This is the default listener and normally should listen to port 80.
34
- Listener:
35
- Port: 80
36
- # For Application Load Balancers, the supported protocols are HTTP and HTTPS. For Network Load Balancers, the supported protocol is TCP.
37
- # Protocol: TCP # valid values - application elb: HTTP HTTPS, network elb: TCP, TLS
38
- # ufo sets these defaults:
39
- # application elb: HTTP # unless port is 443
40
- # application elb: HTTPS # if port is 443
41
- # network elb: TCP # unless port is 443
42
- # network elb: TLS # if port is 443
43
- # Can keep protocol commented out,
44
- # unless need to override the defaults.
45
- # If using the listener to handle SSL
46
- # Certificates:
47
- # - CertificateArn: arn:aws:acm:us-east-1:111111111111:certificate/11111111-2222-3333-4444-555555555555
48
-
49
- # An optional second listener can be created.
50
- # If HTTPS and SSL is required then the listener_ssl config is what you should use.
51
- # Application ELBs support SSL termination.
52
- # Network load balancers do not and must pass the request through to the app
53
- # to handle SSL termination.
54
- #
55
- # ufo creates an ssl listener when listener_ssl is set.
56
- # ListenerSsl:
57
- # Port: 443
58
- # # Certificates:
59
- # # - CertificateArn: arn:aws:acm:us-east-1:111111111111:certificate/11111111-2222-3333-4444-555555555555
60
- # # Protocol: TCP # valid values - application elb: HTTP HTTPS, network elb: TCP, TLS
61
- # # ufo handles setting the defaults:
62
- # # application elb: HTTPS
63
- # # network elb: TLS
64
-
65
- # Configure dns to automatically be associated with the ELB dns name.
66
- # Note, the route53 record set for the domain name must already exist.
67
- # The {stack_name} variable gets replaced with the name of the CloudFormation stack name.
68
- # Example: {stack_name} => demo-web
69
- # Dns:
70
- # Name: "{stack_name}.yourdomain."
71
- # HostedZoneName: yourdomain. # dont forget the trailing period
72
- # TTL: '60' # ttl has special upcase casing
@@ -1,26 +0,0 @@
1
- ---
2
- vpc: <%= @options[:vpc_id] %>
3
- ecs_subnets: # required: at least 2 subnets
4
- <% @options[:ecs_subnets].each do |subnet| -%>
5
- - <%= subnet %>
6
- <% end -%>
7
- elb_subnets: # defaults to same subnets as ecs_subnets when not set
8
- <% @options[:elb_subnets].each do |subnet| -%>
9
- - <%= subnet %>
10
- <% end -%>
11
-
12
- # Optional additional existing security group ids to add on top of the ones created by ufo.
13
- # elb_security_groups:
14
- # - sg-aaa
15
- # ecs_security_groups:
16
- # - sg-bbb
17
- # - sg-ccc
18
-
19
- # Also supports extra security groups specific to each ECS service
20
- # ecs_security_groups:
21
- # demo-web:
22
- # - sg-bbb
23
- # - sg-ccc
24
- # demo-worker:
25
- # - sg-bbb
26
- # - sg-ccc
@@ -1,26 +0,0 @@
1
- # More info: http://ufoships.com/docs/ufo-settings/
2
- # The base config is treated special. It gets included the other environments automatically.
3
- # Yaml also directly supports merging with & and <<* syntax but doing it automatically
4
- # for a cleaner syntax.
5
- base:
6
- image: <%= @image %>
7
- # clean_keep: 30
8
- # ecr_keep: 30
9
- # network_profile: default # .ufo/settings/network/default.yml file
10
- # cfn_profile: default # .ufo/settings/cfn/default.yml file
11
- # If you want to have prettier name set for the ECS service name
12
- # There are some cavaets with this. Updating properties on resources that require
13
- # replacment might not work. For example, adding and removing a load balancer.
14
- # In these cases, you must delete the entire ecs service and recreate it.
15
- stack_naming: append_ufo_env # new default setting in ufo v5.0.6
16
- auto_camelize: false # new default setting in ufo v5
17
-
18
- development:
19
- # cluster: development
20
- # The aws_profile tightly binds UFO_ENV to AWS_PROFILE and vice-versa.
21
- # aws_profile: dev_profile
22
-
23
- production:
24
- # cluster: production
25
- # The aws_profile tightly binds UFO_ENV to AWS_PROFILE and vice-versa.
26
- # aws_profile: prod_profile
@@ -1,61 +0,0 @@
1
- # There some built-in helpers that are automatically available in this file.
2
- #
3
- # Some of helpers get data from the Dockerfile and some are from other places.
4
- # Here's a summary of the some helpers:
5
- #
6
- # helper.full_image_name 
7
- # helper.dockerfile_port
8
- # helper.env_vars(text)
9
- # helper.env_file(path)
10
- # helper.current_region
11
- #
12
- # More info: http://ufoships.com/docs/helpers/
13
- #
14
- <% source_name = @options[:launch_type] == "fargate" ? "fargate" : "main" -%>
15
- task_definition "<%= @app %>-web" do
16
- source "<%= source_name %>" # will use ufo/templates/<%= source_name %>.json.erb
17
- variables(
18
- family: task_definition_name,
19
- name: "web",
20
- container_port: helper.dockerfile_port,
21
- # Comment out awslogs_* if you do not want logs to be sent to CloudWatch.
22
- # Strongly recommended to use CloudWatch/centralized logging.
23
- # Ufo automatically creates the log group as part of deployment.
24
- #
25
- # More info on awslogs settings: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html
26
- # The log stream takes the following format:
27
- # prefix-name/container-name/ecs-task-id
28
- # Here's an exmaple when you specify the prefix of "demo"
29
- # demo/web/209e93b4-5523-4496-9a27-662fd151eb78
30
- awslogs_group: ["ecs/<%= @app %>-web", Ufo.env_extra].compact.join('-'),
31
- awslogs_stream_prefix: "<%= @app %>",
32
- awslogs_region: helper.current_region,
33
- # command: ["bin/web"] # IMPORTANT: change or create a bin/web file
34
- )
35
- end
36
-
37
- task_definition "<%= @app %>-worker" do
38
- source "<%= source_name %>" # will use ufo/templates/<%= source_name %>.json.erb
39
- variables(
40
- family: task_definition_name,
41
- name: "worker",
42
- # Comment out awslogs_* if you do not want logs to be sent to CloudWatch.
43
- awslogs_group: ["ecs/<%= @app %>-worker", Ufo.env_extra].compact.join('-'),
44
- awslogs_stream_prefix: "<%= @app %>",
45
- awslogs_region: helper.current_region,
46
- # command: ["bin/worker"] # IMPORTANT: change or create a bin/worker file
47
- )
48
- end
49
-
50
- task_definition "<%= @app %>-clock" do
51
- source "<%= source_name %>" # will use ufo/templates/<%= source_name %>.json.erb
52
- variables(
53
- family: task_definition_name,
54
- name: "clock",
55
- # Comment out awslogs_* if you do not want logs to be sent to CloudWatch.
56
- awslogs_group: ["ecs/<%= @app %>-clock", Ufo.env_extra].compact.join('-'),
57
- awslogs_stream_prefix: "<%= @app %>",
58
- awslogs_region: helper.current_region,
59
- # command: ["bin/clock"] # IMPORTANT: change or create a bin/clock file
60
- )
61
- end
@@ -1,39 +0,0 @@
1
- {
2
- "family": "<%= @family %>",
3
- "requiresCompatibilities": ["FARGATE"],
4
- "networkMode": "awsvpc",
5
- "cpu": "<%= @cpu %>",
6
- "memory": "<%= @memory %>",
7
- "containerDefinitions": [
8
- {
9
- "name": "<%= @name %>",
10
- "image": "<%= @image %>",
11
- <% if @container_port %>
12
- "portMappings": [
13
- {
14
- "containerPort": <%= @container_port %>,
15
- "protocol": "tcp"
16
- }
17
- ],
18
- <% end %>
19
- "command": <%= @command.to_json %>,
20
- <% if @environment %>
21
- "environment": <%= @environment.to_json %>,
22
- <% end %>
23
- <% if @secrets %>
24
- "secrets": <%= @secrets.to_json %>,
25
- <% end %>
26
- <% if @awslogs_group %>
27
- "logConfiguration": {
28
- "logDriver": "awslogs",
29
- "options": {
30
- "awslogs-group": "<%= @awslogs_group %>",
31
- "awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
32
- "awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
33
- }
34
- },
35
- <% end %>
36
- "essential": true
37
- }
38
- ]
39
- }
@@ -1,43 +0,0 @@
1
- {
2
- "family": "<%= @family %>",
3
- "networkMode": "awsvpc",
4
- "containerDefinitions": [
5
- {
6
- "name": "<%= @name %>",
7
- "image": "<%= @image %>",
8
- "cpu": <%= @cpu %>,
9
- <% if @memory %>
10
- "memory": <%= @memory %>,
11
- <% end %>
12
- <% if @memory_reservation %>
13
- "memoryReservation": <%= @memory_reservation %>,
14
- <% end %>
15
- <% if @container_port %>
16
- "portMappings": [
17
- {
18
- "containerPort": <%= @container_port %>,
19
- "protocol": "tcp"
20
- }
21
- ],
22
- <% end %>
23
- "command": <%= @command.to_json %>,
24
- <% if @environment %>
25
- "environment": <%= @environment.to_json %>,
26
- <% end %>
27
- <% if @secrets %>
28
- "secrets": <%= @secrets.to_json %>,
29
- <% end %>
30
- <% if @awslogs_group %>
31
- "logConfiguration": {
32
- "logDriver": "awslogs",
33
- "options": {
34
- "awslogs-group": "<%= @awslogs_group %>",
35
- "awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
36
- "awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
37
- }
38
- },
39
- <% end %>
40
- "essential": true
41
- }
42
- ]
43
- }
@@ -1,19 +0,0 @@
1
- # Example ufo/variables/base.rb
2
- # More info on how variables work: http://ufoships.com/docs/variables/
3
- @image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
4
- @environment = helper.env_file(".env")
5
- @secrets = helper.secrets_file(".secrets")
6
- <% if @options[:launch_type] == "fargate" -%>
7
- # Ensure that the cpu and memory values are a supported combination by Fargate.
8
- # More info: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html"
9
- <% end -%>
10
- @cpu = 256
11
- @memory = 512
12
- @memory_reservation = 512
13
-
14
- <% if @execution_role_arn_input -%>
15
- @execution_role_arn = "<%= @execution_role_arn_input %>"
16
- <% else -%>
17
- # required for fargate
18
- # @execution_role_arn = "..."
19
- <% end -%>
@@ -1,8 +0,0 @@
1
- # Example ufo/variables/development.rb
2
- # More info on how variables work: http://ufoships.com/docs/variables/
3
- @cpu = 256
4
- # Refer to https://github.com/tongueroo/ufo/issues/87 as to why the += is used
5
- @environment += helper.env_vars(%Q[
6
- RAILS_ENV=development
7
- SECRET_KEY_BASE=secret
8
- ])
@@ -1,7 +0,0 @@
1
- # Example ufo/variables/production.rb
2
- # More info on how variables work: http://ufoships.com/docs/variables/
3
- @cpu = 256
4
- @environment += helper.env_vars(%Q[
5
- RAILS_ENV=production
6
- SECRET_KEY_BASE=secret
7
- ])
@@ -1,15 +0,0 @@
1
- FROM ruby:2.5.1
2
-
3
- WORKDIR /app
4
- ADD Gemfile /app/Gemfile
5
- ADD Gemfile.lock /app/Gemfile.lock
6
- RUN bundle install --system
7
-
8
- ADD . /app
9
- RUN bundle install --system
10
-
11
- EXPOSE 4567
12
-
13
- # If you do not have a bin/web wrapper file, create one or update this command
14
- RUN chmod a+x bin/web
15
- CMD ["bin/web"]
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Generated starter bin/deploy script example.
4
- # Meant to be overridden.
5
-
6
- # Only build one docker image and deploys it to multiple ECS services
7
- ufo ships <%= @app %>-{web,clock,worker}
@@ -1,70 +0,0 @@
1
- class Ufo::Apps
2
- class CfnMap
3
- extend Memoist
4
- include Ufo::Stack::Helper
5
-
6
- def initialize(options = {})
7
- @options = options
8
- @cluster = @options[:cluster] || default_cluster(options[:service])
9
- @map = {}
10
- end
11
-
12
- # Example:
13
- # {"development-demo-web-Ecs-1L3WUTJFFM5JV"=>"demo-web"}
14
- def map
15
- return @map if @populated
16
-
17
- populate_map!
18
- @populated = true
19
- @map
20
- end
21
-
22
- def summaries
23
- filter = %w[
24
- UPDATE_COMPLETE
25
- CREATE_COMPLETE
26
- UPDATE_ROLLBACK_COMPLETE
27
- UPDATE_IN_PROGRESS
28
- UPDATE_COMPLETE_CLEANUP_IN_PROGRESS
29
- UPDATE_ROLLBACK_IN_PROGRESS
30
- UPDATE_ROLLBACK_FAILED
31
- UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS
32
- REVIEW_IN_PROGRESS
33
- ]
34
-
35
- summaries = []
36
- next_token = true
37
- while next_token
38
- resp = cloudformation.list_stacks(stack_status_filter: filter)
39
- summaries += resp.stack_summaries
40
- next_token = resp.next_token
41
- end
42
-
43
- # look for stacks that beling that ufo create
44
- summaries.select do |s|
45
- s.template_description =~ /Ufo ECS stack/
46
- end
47
- end
48
- memoize :summaries
49
-
50
- def populate_map!
51
- threads = []
52
- summaries.each do |summary|
53
- threads << Thread.new do
54
- resp = cloudformation.describe_stack_resources(stack_name: summary.stack_name)
55
- ecs_resource = resp.stack_resources.find do |resource|
56
- resource.logical_resource_id == "Ecs"
57
- end
58
- # Example: "PhysicalResourceId": "arn:aws:ecs:us-east-1:111111111111:service/dev-demo-web-Ecs-1HRL8Y9F4D1CR"
59
- ecs_service_name = ecs_resource.physical_resource_id.split('/').last
60
- @map[ecs_service_name] = stack_name_to_service_name(summary.stack_name)
61
- end
62
- end
63
- threads.map(&:join)
64
- end
65
-
66
- def stack_name_to_service_name(stack_name)
67
- stack_name.sub("#{@cluster}-",'')
68
- end
69
- end
70
- end
@@ -1,24 +0,0 @@
1
- class Ufo::Apps
2
- class Cluster
3
- def self.all
4
- new.all
5
- end
6
-
7
- def all
8
- Ufo.check_ufo_project!
9
- clusters = if settings[:service_cluster]
10
- settings[:service_cluster].values
11
- elsif settings[:cluster]
12
- settings[:cluster]
13
- else
14
- Ufo.env
15
- end
16
- [clusters].flatten.compact
17
- end
18
-
19
- private
20
- def settings
21
- @settings ||= Ufo.settings
22
- end
23
- end
24
- end
@@ -1,56 +0,0 @@
1
- class Ufo::Apps
2
- class Service
3
- extend Memoist
4
-
5
- def initialize(service, options)
6
- @service = service
7
- @options = options
8
- end
9
-
10
- def to_a
11
- [name, task_definition, running, launch_type, ufo?]
12
- end
13
-
14
- def task_definition
15
- @service["task_definition"].split('/').last
16
- end
17
-
18
- def launch_type
19
- @service["launch_type"]
20
- end
21
-
22
- def cfn_map
23
- @cfn_map ||= CfnMap.new(@options).map
24
- end
25
-
26
- def ufo?
27
- yes = !!cfn_map[@service["service_name"]]
28
- yes ? "yes" : "no"
29
- end
30
-
31
- def name
32
- actual_service_name = @service["service_name"]
33
- pretty_name = cfn_map[actual_service_name]
34
- if pretty_name
35
- "#{actual_service_name} (#{pretty_name})"
36
- else
37
- actual_service_name
38
- end
39
- end
40
-
41
- def running
42
- @service["running_count"]
43
- end
44
-
45
- def dns
46
- return 'dns' if ENV['TEST']
47
- elb = info.load_balancer(@service)
48
- elb.dns_name if elb
49
- end
50
-
51
- def info
52
- Ufo::Info.new(@service)
53
- end
54
- memoize :info
55
- end
56
- end
data/lib/ufo/apps.rb DELETED
@@ -1,56 +0,0 @@
1
- require 'text-table'
2
-
3
- module Ufo
4
- class Apps
5
- extend Memoist
6
- include Stack::Helper
7
-
8
- def initialize(options)
9
- @options = options
10
- @clusters = @options[:cluster] || @options[:clusters]
11
- @clusters = [@clusters].flatten.compact
12
- if @clusters.empty?
13
- @clusters = Cluster.all
14
- end
15
- end
16
-
17
- def list_all
18
- @clusters.each do |cluster|
19
- list(cluster)
20
- end
21
- end
22
-
23
- def list(cluster)
24
- begin
25
- resp = ecs.list_services(cluster: cluster)
26
- rescue Aws::ECS::Errors::ClusterNotFoundException => e
27
- puts "ECS cluster #{cluster.color(:green)} not found."
28
- return
29
- end
30
- arns = resp.service_arns.sort
31
-
32
- puts "Listing ECS services in the #{cluster.color(:green)} cluster."
33
- if arns.empty?
34
- puts "No ECS services found in the #{cluster.color(:green)} cluster."
35
- return
36
- end
37
-
38
- resp = ecs.describe_services(services: arns, cluster: cluster)
39
- display_info(resp)
40
- end
41
-
42
- def display_info(resp)
43
- table = Text::Table.new
44
- table.head = ["Service Name", "Task Definition", "Running", "Launch type", "Ufo?"]
45
- resp["services"].each do |s|
46
- table.rows << service_info(s)
47
- end
48
- puts table unless ENV['TEST']
49
- end
50
-
51
- # for specs
52
- def service_info(s)
53
- Service.new(s, @options).to_a
54
- end
55
- end
56
- end
@@ -1,36 +0,0 @@
1
- require "aws-sdk-cloudformation"
2
- require "aws-sdk-cloudwatchlogs"
3
- require "aws-sdk-ec2"
4
- require "aws-sdk-ecr"
5
- require "aws-sdk-ecs"
6
- require "aws-sdk-elasticloadbalancingv2"
7
-
8
- require "aws_mfa_secure/ext/aws" # add MFA support
9
-
10
- module Ufo
11
- module AwsService
12
- def cloudformation
13
- @cloudformation ||= Aws::CloudFormation::Client.new
14
- end
15
-
16
- def cloudwatchlogs
17
- @cloudwatchlogs ||= Aws::CloudWatchLogs::Client.new
18
- end
19
-
20
- def ec2
21
- @ec2 ||= Aws::EC2::Client.new
22
- end
23
-
24
- def ecr
25
- @ecr ||= Aws::ECR::Client.new
26
- end
27
-
28
- def ecs
29
- @ecs ||= Aws::ECS::Client.new
30
- end
31
-
32
- def elb
33
- @elb ||= Aws::ElasticLoadBalancingV2::Client.new
34
- end
35
- end
36
- end