ufo 5.0.7 → 6.0.0

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