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,158 +0,0 @@
1
- ## Summarized Example
2
-
3
- ufo tasks build
4
-
5
- Builds all the task defintiions. Note all the existing ufo/output generated task defintions are wiped out.
6
-
7
- ## Explanation
8
-
9
- The command `ufo tasks build` generates the task definitions locally and writes them to the `output/` folder. There are 2 files that it uses in order to produce the raw AWS task definitions files.
10
-
11
- 1. ufo/templates/main.json.erb
12
- 2. ufo/task_definitions.rb
13
-
14
- Here's an example of each of them:
15
-
16
- **main.json.erb**:
17
-
18
- {
19
- "family": "<%= @family %>",
20
- "containerDefinitions": [
21
- {
22
- "name": "<%= @name %>",
23
- "image": "<%= @image %>",
24
- "cpu": <%= @cpu %>,
25
- <% if @memory %>
26
- "memory": <%= @memory %>,
27
- <% end %>
28
- <% if @memory_reservation %>
29
- "memoryReservation": <%= @memory_reservation %>,
30
- <% end %>
31
- <% if @container_port %>
32
- "portMappings": [
33
- {
34
- "containerPort": "<%= @container_port %>",
35
- "protocol": "tcp"
36
- }
37
- ],
38
- <% end %>
39
- "command": <%= @command.to_json %>,
40
- <% if @environment %>
41
- "environment": <%= @environment.to_json %>,
42
- <% end %>
43
- <% if @awslogs_group %>
44
- "logConfiguration": {
45
- "logDriver": "awslogs",
46
- "options": {
47
- "awslogs-group": "<%= @awslogs_group %>",
48
- "awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
49
- "awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
50
- }
51
- },
52
- <% end %>
53
- "essential": true
54
- }
55
- ]
56
- }
57
-
58
- **task_definitions.rb**:
59
-
60
- ```ruby
61
- task_definition "demo-web" do
62
- source "main" # will use ufo/templates/main.json.erb
63
- variables(
64
- family: task_definition_name,
65
- name: "web",
66
- container_port: helper.dockerfile_port,
67
- command: ["bin/web"]
68
- )
69
- end
70
-
71
- task_definition "demo-worker" do
72
- source "main" # will use ufo/templates/main.json.erb
73
- variables(
74
- family: task_definition_name,
75
- name: "worker",
76
- command: ["bin/worker"]
77
- )
78
- end
79
-
80
- task_definition "demo-clock" do
81
- source "main" # will use ufo/templates/main.json.erb
82
- variables(
83
- family: task_definition_name,
84
- name: "clock",
85
- command: ["bin/clock"]
86
- )
87
- end
88
- ```
89
-
90
- The shared variables are set in the variables folder:
91
-
92
- **ufo/variables/base.rb**:
93
-
94
- ```ruby
95
- @image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
96
- @cpu = 128
97
- @memory_reservation = 256
98
- @environment = helper.env_file(".env")
99
- ```
100
-
101
- **ufo/variables/production.rb**:
102
-
103
- ```ruby
104
- @environment = helper.env_vars(%Q{
105
- RAILS_ENV=production
106
- SECRET_KEY_BASE=secret
107
- })
108
- ```
109
-
110
- Ufo combines the `main.json.erb` template, `task_definitions.rb` definitions, and variables in the `.ufo/variables` folder. It then generates the raw AWS formatted task definition in the `output` folder.
111
-
112
- To build the task definitions:
113
-
114
- ufo tasks build
115
-
116
- You should see output similar to below:
117
-
118
- $ ufo tasks build
119
- Building Task Definitions...
120
- Generating Task Definitions:
121
- ufo/output/demo-web.json
122
- ufo/output/demo-worker.json
123
- ufo/output/demo-clock.json
124
- Task Definitions built in ufo/output.
125
- $
126
-
127
- Let's take a look at one of the generated files: `.ufo/output/demo-web.json`.
128
-
129
- {
130
- "family": "demo-web",
131
- "containerDefinitions": [
132
- {
133
- "name": "web",
134
- "image": "tongueroo/demo-ufo:ufo-2017-06-11T22-22-32-a18aa30",
135
- "cpu": 128,
136
- "memoryReservation": 256,
137
- "portMappings": [
138
- {
139
- "containerPort": "3000",
140
- "protocol": "tcp"
141
- }
142
- ],
143
- "command": [
144
- "bin/web"
145
- ],
146
- "environment": [
147
- {
148
- "name": "RAILS_ENV",
149
- "value": "staging"
150
- }
151
- ],
152
- "essential": true
153
- }
154
- ]
155
- }
156
-
157
- If you need to modify the task definition template to suite your own needs it is super simple, just edit `main.json.erb`. No need to dive deep into internal code that builds up the task definition with some internal structure. It is all there for you to fully control.
158
-
@@ -1,14 +0,0 @@
1
- The `ufo tasks register` command registers all the generated task definitions in `output/` to AWS ECS. Let's run it:
2
-
3
- ufo tasks register
4
-
5
- You should see something similiar to this:
6
-
7
- demo-clock task definition registered.
8
- demo-web task definition registered.
9
- demo-worker task definition registered.
10
-
11
- You can verify that the task definitions have been registered properly by viewing the AWS ECS Console Task Definitions page. You should see something similar to this:
12
-
13
- <img src="/img/tutorials/ecs-console-task-definitions.png" class="doc-photo" />
14
-
@@ -1,7 +0,0 @@
1
- ## Examples
2
-
3
- ufo tasks build
4
-
5
- Builds all the task defintiions.
6
-
7
- Note all the existing ufo/output generated task defintions are wiped out.
@@ -1,3 +0,0 @@
1
- ## Examples
2
-
3
- ufo upgrade v3to4 --vpc-id vpc-123 --ecs-subnets subnet-111 subnet-222 --elb-subnets subnet-111 subnet-222
data/lib/ufo/help.rb DELETED
@@ -1,9 +0,0 @@
1
- module Ufo::Help
2
- class << self
3
- def text(namespaced_command)
4
- path = namespaced_command.to_s.gsub(':','/')
5
- path = File.expand_path("../help/#{path}.md", __FILE__)
6
- IO.read(path) if File.exist?(path)
7
- end
8
- end
9
- end
data/lib/ufo/init.rb DELETED
@@ -1,119 +0,0 @@
1
- module Ufo
2
- class Init < Sequence
3
- include Network::Helper
4
-
5
- # Ugly, this is how I can get the options from to match with this Thor::Group
6
- def self.cli_options
7
- [
8
- [:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files."],
9
- [:image, required: true, desc: "Docker image name without the tag. Example: tongueroo/demo-ufo. Configures ufo/settings.yml"],
10
- [:app, desc: "App name. Preferably one word. Used in the generated ufo/task_definitions.rb. If not specified then the app name is inferred as the folder name."],
11
- [:launch_type, default: "ec2", desc: "ec2 or fargate."],
12
- [:template, desc: "Custom template to use."],
13
- [:template_mode, desc: "Template mode: replace or additive."],
14
- [:vpc_id, desc: "Vpc id. For settings/network/default.yml."],
15
- [:ecs_subnets, type: :array, desc: "Subnets for ECS tasks, defaults to --elb-subnets set to. For settings/network/default.yml"],
16
- [:elb_subnets, type: :array, desc: "Subnets for ELB. For settings/network/default.yml"],
17
- ]
18
- end
19
- cli_options.each { |o| class_option(*o) }
20
-
21
- def setup_template_repo
22
- return unless @options[:template]&.include?('/')
23
-
24
- sync_template_repo
25
- end
26
-
27
- def set_source_path
28
- return unless @options[:template]
29
-
30
- custom_template = "#{ENV['HOME']}/.ufo/templates/#{@options[:template]}"
31
-
32
- if @options[:template_mode] == "replace" # replace the template entirely
33
- override_source_paths(custom_template)
34
- else # additive: modify on top of default template
35
- default_template = File.expand_path("../../template", __FILE__)
36
- override_source_paths([custom_template, default_template])
37
- end
38
- end
39
-
40
- # for specs
41
- def set_destination_root
42
- return unless ENV['UFO_ROOT']
43
-
44
- dest = ENV['UFO_ROOT']
45
- FileUtils.rm_rf(dest) && FileUtils.mkdir_p(dest)
46
- self.destination_root = dest
47
- FileUtils.cd(dest)
48
- end
49
-
50
- def set_network_options
51
- configure_network_settings
52
- end
53
-
54
- def init_files
55
- # map variables
56
- @app = options[:app] || inferred_app
57
- @image = options[:image]
58
- # copy the files
59
- puts "Setting up ufo project..."
60
- exclude_pattern = File.exist?("#{Ufo.root}/Dockerfile") ?
61
- /(\.git|Dockerfile)/ :
62
- /(\.git)/
63
- directory ".", exclude_pattern: exclude_pattern
64
- end
65
-
66
- def upsert_gitignore
67
- text =<<-EOL
68
- .ufo/current
69
- .ufo/data
70
- .ufo/log
71
- .ufo/output
72
- EOL
73
- if File.exist?(".gitignore")
74
- append_to_file ".gitignore", text
75
- else
76
- create_file ".gitignore", text
77
- end
78
- end
79
-
80
- def upsert_dockerignore
81
- text = ".ufo\n"
82
- if File.exist?(".dockerignore")
83
- append_to_file ".dockerignore", text
84
- else
85
- create_file ".dockerignore", text
86
- end
87
- end
88
-
89
- def user_message
90
- puts "Starter ufo files created."
91
- puts <<-EOL
92
- Congrats 🎉 You have successfully set up ufo for your project.
93
- #{"="*64}
94
-
95
- ## Task Definition Customizations
96
-
97
- If you need to customize the ECS task definition to configure things like memory and cpu allocation. You can do this by adjusting the files the .ufo/variables folder. These variables get applied to the .ufo/templates/main.json.erb task definition json that is passed to the ECS register task definition api.
98
-
99
- Some additional starter example roles for your apps were set up in in .ufo/task_definitions.rb. Be sure to check it out and adjust it for your needs.
100
-
101
- ## Settings files
102
-
103
- Additionally, ufo generated starter settings files that allow you to customize more settings.
104
-
105
- * .ufo/settings.yml: general settings.
106
- * .ufo/settings/cfn/default.yml: properties of CloudFormation resources that ufo creates.
107
- * .ufo/settings/network/default.yml: network settings.
108
-
109
- More more info refer to: http://ufoships.com/docs/settings/
110
-
111
- To deploy to ECS:
112
-
113
- ufo current --service #{@app}-web
114
- ufo ship
115
-
116
- EOL
117
- end
118
- end
119
- end
@@ -1,48 +0,0 @@
1
- # Provides access to default network settings for a vpc: subnets and security_group
2
- # If no @vpc_id is provided to the initializer then the default vpc is used.
3
- class Ufo::Network
4
- class Fetch
5
- include Ufo::AwsService
6
- extend Memoist
7
-
8
- def initialize(vpc_id)
9
- @vpc_id = vpc_id
10
- end
11
-
12
- def vpc_id
13
- return @vpc_id if @vpc_id
14
-
15
- resp = ec2.describe_vpcs(filters: [
16
- {name: "isDefault", values: ["true"]}
17
- ])
18
- default_vpc = resp.vpcs.first
19
- if default_vpc
20
- default_vpc.vpc_id
21
- else
22
- puts "A default vpc was not found in this AWS account and region.".color(:red)
23
- puts "Because there is no default vpc, please specify the --vpc-id option. More info: http://ufoships.com/reference/ufo-init/"
24
- exit 1
25
- end
26
- end
27
- memoize :vpc_id
28
-
29
- # all subnets
30
- def subnet_ids
31
- resp = ec2.describe_subnets(filters: [
32
- {name: "vpc-id", values: [vpc_id]}
33
- ])
34
- resp.subnets.map(&:subnet_id).sort
35
- end
36
- memoize :subnet_ids
37
-
38
- # default security group
39
- def security_group_id
40
- resp = ec2.describe_security_groups(filters: [
41
- {name: "vpc-id", values: [vpc_id]},
42
- {name: "group-name", values: ["default"]}
43
- ])
44
- resp.security_groups.first.group_id
45
- end
46
- memoize :security_group_id
47
- end
48
- end
@@ -1,23 +0,0 @@
1
- class Ufo::Network
2
- module Helper
3
- private
4
- # for balancer default profile
5
- def configure_network_settings
6
- @options = @options.dup
7
- return test_network_settings if ENV['TEST']
8
-
9
- fetch = Fetch.new(@options[:vpc_id])
10
- @options[:vpc_id] ||= fetch.vpc_id
11
- @options[:ecs_subnets] ||= fetch.subnet_ids
12
- @options[:elb_subnets] ||= @options[:ecs_subnets] || fetch.subnet_ids
13
- end
14
-
15
- # hack for specs
16
- def test_network_settings
17
- @options[:vpc_id] = "vpc-111"
18
- @options[:ecs_subnets] = ["subnet-111", "subnet-222"]
19
- @options[:elb_subnets] = ["subnet-111", "subnet-222"]
20
- @options
21
- end
22
- end
23
- end
@@ -1,26 +0,0 @@
1
- module Ufo
2
- class Network::Init < Thor::Group
3
- include Thor::Actions
4
- include Network::Helper
5
-
6
- add_runtime_options! # force, pretend, quiet, skip options
7
- # https://github.com/erikhuda/thor/blob/master/lib/thor/actions.rb#L49
8
-
9
- # Interesting, when defining the options in this class it screws up the ufo balance -h menu
10
- Network.cli_options.each do |o|
11
- class_option *o
12
- end
13
- def self.source_paths
14
- [File.expand_path("../../../template/.ufo/settings/network", __FILE__)]
15
- end
16
-
17
- def set_network_options
18
- configure_network_settings
19
- end
20
-
21
- def starter_files
22
- filename = @options[:filename] || "default"
23
- template "default.yml", ".ufo/settings/network/#{filename}.yml"
24
- end
25
- end
26
- end
data/lib/ufo/network.rb DELETED
@@ -1,21 +0,0 @@
1
- module Ufo
2
- class Network < Command
3
- def self.cli_options
4
- [
5
- [:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files."],
6
- [:ecs_subnets, type: :array, desc: "ECS Subnets"],
7
- [:elb_subnets, type: :array, desc: "ELB Subnets"],
8
- [:vpc_id, desc: "Vpc id"],
9
- [:filename, default: "default", desc: "Name of the settings file to create w/o extension."],
10
- ]
11
- end
12
-
13
- cli_options.each { |o| option(*o) }
14
-
15
- desc "init", "Creates network starter settings file."
16
- long_desc Help.text("network:init")
17
- def init
18
- Init.start
19
- end
20
- end
21
- end
data/lib/ufo/ps.rb DELETED
@@ -1,129 +0,0 @@
1
- require 'text-table'
2
-
3
- module Ufo
4
- class Ps < Base
5
- delegate :service, to: :info
6
-
7
- def run
8
- unless service
9
- puts no_service_message
10
- return
11
- end
12
-
13
- summary
14
-
15
- if task_arns.empty?
16
- puts "There are 0 running tasks."
17
- return
18
- end
19
-
20
- all_task_arns = task_arns.each_slice(100).map do |arns|
21
- resp = ecs.describe_tasks(tasks: arns, cluster: @cluster)
22
- resp["tasks"]
23
- end.flatten
24
-
25
- display_tasks(all_task_arns)
26
- display_scale_help
27
- display_target_group_help
28
- end
29
-
30
- def summary
31
- return unless @options[:summary]
32
- puts "=> Service: #{full_service}"
33
- puts " Service name: #{service.service_name}"
34
- puts " Status: #{service.status}"
35
- puts " Running count: #{service.running_count}"
36
- puts " Desired count: #{service.desired_count}"
37
- puts " Launch type: #{service.launch_type}"
38
- puts " Task definition: #{service.task_definition.split('/').last}"
39
- elb = info.load_balancer(service)
40
- if elb
41
- puts " Elb: #{elb.dns_name}"
42
- puts " Elb type: #{elb.type}"
43
- end
44
- puts " Route53: #{info.route53_dns}" if info.route53_dns
45
- end
46
-
47
- def display_target_group_help
48
- events = service["events"][0..4]
49
- return if events[0].message =~ /has reached a steady state/
50
-
51
- # The error currently happens to be the 5th element.
52
- #
53
- # Example:
54
- # "(service XXX) (instance i-XXX) (port 32875) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/devel-Targe-1111111111111/1111111111111111) due to (reason Health checks failed with these codes: [400])">]
55
- error_event = events.find do |e|
56
- e.message =~ /is unhealthy in/ &&
57
- e.message =~ /targetgroup/
58
- end
59
- return unless error_event
60
-
61
- puts "There are targets in the target group reporting unhealthy. This can cause containers to cycle. Here's the error:"
62
- puts error_event.message.color(:red)
63
- puts "Check out the ECS console events tab for more info."
64
- end
65
-
66
- # If the running count less than the desired account yet, check the events
67
- # and show a message with helpful debugging information.
68
- def display_scale_help
69
- return if service.running_count >= service.desired_count
70
-
71
- events = service["events"][0..3] # only check most recent 4 messages
72
- error_event = events.find do |e|
73
- e.message =~ /was unable to place a task/
74
- end
75
- return unless error_event
76
-
77
- puts "There is an issue scaling the #{@service.color(:green)} service to #{service.desired_count}. Here's the error:"
78
- puts error_event.message.color(:red)
79
- if service.launch_type == "EC2"
80
- puts "If AutoScaling is set up for the container instances, it can take a little time to add additional instances. You'll see this message until the capacity is added."
81
- end
82
- end
83
-
84
- def display_tasks(tasks)
85
- table = Text::Table.new
86
- Task.extra_columns = @options[:extra]
87
- table.head = Task.header
88
- tasks = tasks.sort_by { |t| t["task_arn"] }
89
- tasks.each do |t|
90
- task = Task.new(t)
91
- table.rows << task.to_a unless task.hide?
92
- end
93
- puts table
94
- end
95
-
96
- def statuses
97
- status = @options[:status].upcase
98
- valid_statuses = %w[RUNNING PENDING STOPPED]
99
- all_statuses = valid_statuses + ["ALL"]
100
- unless all_statuses.include?(status)
101
- puts "Invalid status filter provided. Please provided one of the following:"
102
- puts all_statuses.map(&:downcase).join(", ")
103
- exit 1
104
- end
105
-
106
- status == "ALL" ? valid_statuses : [status]
107
- end
108
-
109
- def task_arns
110
- threads, results = [], {}
111
- statuses.each do |status|
112
- threads << Thread.new do
113
- options = {
114
- service_name: service.service_name,
115
- cluster: @cluster,
116
- desired_status: status,
117
- }
118
- # Limit display of too many stopped tasks
119
- options[:max_results] = 20 if status == "STOPPED"
120
- resp = ecs.list_tasks(options)
121
- results[status] = resp.task_arns
122
- end
123
- end
124
- threads.map(&:join)
125
- results.values.flatten.uniq
126
- end
127
- memoize :task_arns
128
- end
129
- end
data/lib/ufo/scale.rb DELETED
@@ -1,28 +0,0 @@
1
- module Ufo
2
- class Scale < Base
3
- delegate :service, to: :info
4
-
5
- def initialize(service, count, options={})
6
- super(service, options)
7
- @count = count
8
- end
9
-
10
- def update
11
- unless service_exists?
12
- puts "Unable to find the #{@service.color(:green)} service on the #{@cluster.color(:green)} cluster."
13
- puts "Are you sure you are trying to scale the right service on the right cluster?"
14
- exit
15
- end
16
- ecs.update_service(
17
- service: service.service_name,
18
- cluster: @cluster,
19
- desired_count: @count
20
- )
21
- puts "Scale #{full_service.color(:green)} service in #{@cluster.color(:green)} to #{@count}" unless @options[:mute]
22
- end
23
-
24
- def service_exists?
25
- !!service
26
- end
27
- end
28
- end
@@ -1,44 +0,0 @@
1
- class Ufo::Setting
2
- class Profile
3
- extend Memoist
4
-
5
- def initialize(type, profile=nil)
6
- @type = type.to_s # cfn or network
7
- @profile = profile
8
- end
9
-
10
- def data
11
- names = [
12
- @profile, # user specified
13
- Ufo.env, # conventional based on env
14
- "default", # fallback to default
15
- "base", # finally fallback to base
16
- ].compact.uniq
17
- paths = names.map { |name| "#{Ufo.root}/.ufo/settings/#{@type}/#{name}.yml" }
18
- found = paths.find { |p| File.exist?(p) }
19
- unless found
20
- puts "#{@type.camelize} profile not found. Please double check that it exists. Checked paths: #{paths}"
21
- exit 1
22
- end
23
-
24
- text = RenderMePretty.result(found)
25
- specific_data = yaml_load(text)
26
-
27
- base = "#{Ufo.root}/.ufo/settings/#{@type}/base.yml"
28
- base_data = if File.exist?(base)
29
- text = RenderMePretty.result(base)
30
- yaml_load(text)
31
- else
32
- {}
33
- end
34
-
35
- base_data.deep_merge(specific_data)
36
- end
37
- memoize :data
38
-
39
- def yaml_load(text)
40
- result = YAML.load(text) # yaml file can contain nothing but comments
41
- result.is_a?(Hash) ? result.deep_symbolize_keys : {}
42
- end
43
- end
44
- end
@@ -1,22 +0,0 @@
1
- class Ufo::Setting
2
- class SecurityGroups
3
- include Ufo::Settings
4
- extend Memoist
5
-
6
- def initialize(service, type)
7
- @service, @type = service, type
8
- end
9
-
10
- def load
11
- groups = network[@type] # IE: network[:ecs_security_groups] or network[:elb_security_groups]
12
- return [] unless groups
13
-
14
- case groups
15
- when Array # same security groups used for all services
16
- groups
17
- when Hash # service specific security groups
18
- groups[@service.to_sym] || []
19
- end
20
- end
21
- end
22
- end