ufo 5.0.5 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (455) 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 +11 -1
  11. data/Gemfile +0 -2
  12. data/README.md +2 -31
  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 +13 -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 +245 -340
  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 -4
  179. data/docs/CNAME +0 -1
  180. data/docs/Gemfile +0 -3
  181. data/docs/LICENSE +0 -21
  182. data/docs/README.md +0 -20
  183. data/docs/_config.yml +0 -73
  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/cfn-customize.md +0 -53
  239. data/docs/_includes/commands.html +0 -80
  240. data/docs/_includes/contact.html +0 -17
  241. data/docs/_includes/contact_disqus.html +0 -16
  242. data/docs/_includes/contact_static.html +0 -17
  243. data/docs/_includes/content.html +0 -26
  244. data/docs/_includes/css/bootstrap.min.css +0 -7
  245. data/docs/_includes/css/main.css +0 -501
  246. data/docs/_includes/css/quotes.css +0 -102
  247. data/docs/_includes/css/syntax.css +0 -65
  248. data/docs/_includes/css/table.css +0 -53
  249. data/docs/_includes/css/timeline.css +0 -201
  250. data/docs/_includes/css/ufo.css +0 -218
  251. data/docs/_includes/edit-on-github.html +0 -11
  252. data/docs/_includes/example.html +0 -63
  253. data/docs/_includes/footer.html +0 -51
  254. data/docs/_includes/google_analytics.html +0 -10
  255. data/docs/_includes/head.html +0 -32
  256. data/docs/_includes/header.html +0 -15
  257. data/docs/_includes/js.html +0 -32
  258. data/docs/_includes/js_disqus.html +0 -21
  259. data/docs/_includes/modals.html +0 -40
  260. data/docs/_includes/nav.html +0 -27
  261. data/docs/_includes/prev_next.md +0 -19
  262. data/docs/_includes/quotes.html +0 -19
  263. data/docs/_includes/reference.md +0 -5
  264. data/docs/_includes/repo_push_access.md +0 -11
  265. data/docs/_includes/subnav.html +0 -78
  266. data/docs/_includes/summary.html +0 -22
  267. data/docs/_includes/ufo-ship-options.md +0 -12
  268. data/docs/_includes/uses.html +0 -19
  269. data/docs/_layouts/default.html +0 -11
  270. data/docs/_layouts/style.css +0 -6
  271. data/docs/_reference/ufo-apps.md +0 -37
  272. data/docs/_reference/ufo-cancel.md +0 -24
  273. data/docs/_reference/ufo-completion.md +0 -46
  274. data/docs/_reference/ufo-completion_script.md +0 -27
  275. data/docs/_reference/ufo-current.md +0 -93
  276. data/docs/_reference/ufo-deploy.md +0 -76
  277. data/docs/_reference/ufo-destroy.md +0 -36
  278. data/docs/_reference/ufo-docker-base.md +0 -71
  279. data/docs/_reference/ufo-docker-build.md +0 -91
  280. data/docs/_reference/ufo-docker-clean.md +0 -44
  281. data/docs/_reference/ufo-docker-compile.md +0 -19
  282. data/docs/_reference/ufo-docker-help.md +0 -15
  283. data/docs/_reference/ufo-docker-name.md +0 -37
  284. data/docs/_reference/ufo-docker-push.md +0 -49
  285. data/docs/_reference/ufo-docker.md +0 -38
  286. data/docs/_reference/ufo-init.md +0 -125
  287. data/docs/_reference/ufo-logs.md +0 -40
  288. data/docs/_reference/ufo-network-help.md +0 -15
  289. data/docs/_reference/ufo-network-init.md +0 -39
  290. data/docs/_reference/ufo-network.md +0 -26
  291. data/docs/_reference/ufo-ps.md +0 -56
  292. data/docs/_reference/ufo-releases.md +0 -40
  293. data/docs/_reference/ufo-resources.md +0 -44
  294. data/docs/_reference/ufo-rollback.md +0 -61
  295. data/docs/_reference/ufo-scale.md +0 -50
  296. data/docs/_reference/ufo-ship.md +0 -129
  297. data/docs/_reference/ufo-ships.md +0 -68
  298. data/docs/_reference/ufo-status.md +0 -23
  299. data/docs/_reference/ufo-stop.md +0 -31
  300. data/docs/_reference/ufo-task.md +0 -56
  301. data/docs/_reference/ufo-tasks-build.md +0 -178
  302. data/docs/_reference/ufo-tasks-help.md +0 -15
  303. data/docs/_reference/ufo-tasks-register.md +0 -29
  304. data/docs/_reference/ufo-tasks.md +0 -35
  305. data/docs/_reference/ufo-upgrade-help.md +0 -15
  306. data/docs/_reference/ufo-upgrade-v2to3.md +0 -15
  307. data/docs/_reference/ufo-upgrade-v33to34.md +0 -15
  308. data/docs/_reference/ufo-upgrade-v3to4.md +0 -27
  309. data/docs/_reference/ufo-upgrade-v43to45.md +0 -15
  310. data/docs/_reference/ufo-upgrade.md +0 -29
  311. data/docs/_reference/ufo-version.md +0 -23
  312. data/docs/articles.md +0 -14
  313. data/docs/bin/web +0 -4
  314. data/docs/css/font-awesome/css/font-awesome.css +0 -1566
  315. data/docs/css/font-awesome/css/font-awesome.min.css +0 -4
  316. data/docs/css/font-awesome/fonts/FontAwesome.otf +0 -0
  317. data/docs/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  318. data/docs/css/font-awesome/fonts/fontawesome-webfont.svg +0 -504
  319. data/docs/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  320. data/docs/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  321. data/docs/docs.md +0 -29
  322. data/docs/img/docs/cloudformation-resources.png +0 -0
  323. data/docs/img/logos/boltops-logo-full.png +0 -0
  324. data/docs/img/logos/boltops-logo.png +0 -0
  325. data/docs/img/logos/ufo-logo-2.png +0 -0
  326. data/docs/img/logos/ufo-logo.png +0 -0
  327. data/docs/img/logos/ufo-site-header.png +0 -0
  328. data/docs/img/logos/ufo.jpg +0 -0
  329. data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
  330. data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
  331. data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
  332. data/docs/index.html +0 -10
  333. data/docs/js/bootstrap.js +0 -2114
  334. data/docs/js/bootstrap.min.js +0 -6
  335. data/docs/js/cbpAnimatedHeader.js +0 -44
  336. data/docs/js/cbpAnimatedHeader.min.js +0 -11
  337. data/docs/js/classie.js +0 -80
  338. data/docs/js/contact_me.js +0 -70
  339. data/docs/js/contact_me_static.js +0 -23
  340. data/docs/js/freelancer.js +0 -37
  341. data/docs/js/jqBootstrapValidation.js +0 -912
  342. data/docs/js/jquery-1.11.0.js +0 -4
  343. data/docs/js/jquery.easing.min.js +0 -44
  344. data/docs/js/nav.js +0 -53
  345. data/docs/quick-start.md +0 -133
  346. data/docs/reference.md +0 -29
  347. data/docs/style.css +0 -3
  348. data/docs/utils/ssl-doctor.rb +0 -89
  349. data/docs/utils/test-aws-api-access.rb +0 -11
  350. data/docs/utils/update-cert-chains.sh +0 -11
  351. data/lib/template/.env +0 -3
  352. data/lib/template/.secrets +0 -5
  353. data/lib/template/.ufo/iam_roles/execution_role.rb +0 -7
  354. data/lib/template/.ufo/iam_roles/task_role.rb +0 -21
  355. data/lib/template/.ufo/params.yml.tt +0 -27
  356. data/lib/template/.ufo/settings/cfn/default.yml.tt +0 -72
  357. data/lib/template/.ufo/settings/network/default.yml.tt +0 -26
  358. data/lib/template/.ufo/settings.yml.tt +0 -26
  359. data/lib/template/.ufo/task_definitions.rb.tt +0 -61
  360. data/lib/template/.ufo/templates/fargate.json.erb +0 -39
  361. data/lib/template/.ufo/templates/main.json.erb +0 -43
  362. data/lib/template/.ufo/variables/base.rb.tt +0 -19
  363. data/lib/template/.ufo/variables/development.rb +0 -8
  364. data/lib/template/.ufo/variables/production.rb +0 -7
  365. data/lib/template/Dockerfile +0 -15
  366. data/lib/template/bin/deploy.tt +0 -7
  367. data/lib/ufo/apps/cfn_map.rb +0 -70
  368. data/lib/ufo/apps/cluster.rb +0 -24
  369. data/lib/ufo/apps/service.rb +0 -56
  370. data/lib/ufo/apps.rb +0 -56
  371. data/lib/ufo/aws_service.rb +0 -36
  372. data/lib/ufo/base.rb +0 -35
  373. data/lib/ufo/cancel.rb +0 -23
  374. data/lib/ufo/current.rb +0 -104
  375. data/lib/ufo/default/settings.yml +0 -24
  376. data/lib/ufo/default/templates/main.json.erb +0 -39
  377. data/lib/ufo/destroy.rb +0 -41
  378. data/lib/ufo/docker/variables.rb +0 -26
  379. data/lib/ufo/dsl/helper.rb +0 -79
  380. data/lib/ufo/dsl/outputter.rb +0 -43
  381. data/lib/ufo/dsl/task_definition.rb +0 -108
  382. data/lib/ufo/dsl.rb +0 -96
  383. data/lib/ufo/help/apps.md +0 -12
  384. data/lib/ufo/help/balancer.md +0 -3
  385. data/lib/ufo/help/completions.md +0 -16
  386. data/lib/ufo/help/completions_script.md +0 -1
  387. data/lib/ufo/help/current.md +0 -65
  388. data/lib/ufo/help/deploy.md +0 -38
  389. data/lib/ufo/help/destroy.md +0 -9
  390. data/lib/ufo/help/docker/base.md +0 -49
  391. data/lib/ufo/help/docker/name.md +0 -16
  392. data/lib/ufo/help/docker.md +0 -6
  393. data/lib/ufo/help/init.md +0 -91
  394. data/lib/ufo/help/network/init.md +0 -13
  395. data/lib/ufo/help/ps.md +0 -27
  396. data/lib/ufo/help/releases.md +0 -16
  397. data/lib/ufo/help/resources.md +0 -20
  398. data/lib/ufo/help/rollback.md +0 -35
  399. data/lib/ufo/help/scale.md +0 -26
  400. data/lib/ufo/help/ship.md +0 -95
  401. data/lib/ufo/help/ships.md +0 -35
  402. data/lib/ufo/help/stop.md +0 -7
  403. data/lib/ufo/help/task.md +0 -27
  404. data/lib/ufo/help/tasks/build.md +0 -158
  405. data/lib/ufo/help/tasks/register.md +0 -14
  406. data/lib/ufo/help/tasks.md +0 -7
  407. data/lib/ufo/help/upgrade/v3to4.md +0 -3
  408. data/lib/ufo/help.rb +0 -9
  409. data/lib/ufo/init.rb +0 -119
  410. data/lib/ufo/network/fetch.rb +0 -48
  411. data/lib/ufo/network/helper.rb +0 -23
  412. data/lib/ufo/network/init.rb +0 -26
  413. data/lib/ufo/network.rb +0 -21
  414. data/lib/ufo/ps.rb +0 -129
  415. data/lib/ufo/scale.rb +0 -28
  416. data/lib/ufo/setting/profile.rb +0 -39
  417. data/lib/ufo/setting/security_groups.rb +0 -22
  418. data/lib/ufo/setting.rb +0 -75
  419. data/lib/ufo/settings.rb +0 -20
  420. data/lib/ufo/ship.rb +0 -103
  421. data/lib/ufo/stack/builder/conditions.rb +0 -23
  422. data/lib/ufo/stack/builder/parameters.rb +0 -45
  423. data/lib/ufo/stack/builder/resources/base.rb +0 -4
  424. data/lib/ufo/stack/builder/resources/dns.rb +0 -17
  425. data/lib/ufo/stack/builder/resources/elb.rb +0 -45
  426. data/lib/ufo/stack/builder/resources/listener.rb +0 -42
  427. data/lib/ufo/stack/builder/resources/listener_ssl.rb +0 -16
  428. data/lib/ufo/stack/builder/resources/roles/base.rb +0 -22
  429. data/lib/ufo/stack/builder/resources/roles/execution_role.rb +0 -4
  430. data/lib/ufo/stack/builder/resources/roles/task_role.rb +0 -4
  431. data/lib/ufo/stack/builder/resources/security_group/base.rb +0 -4
  432. data/lib/ufo/stack/builder/resources.rb +0 -20
  433. data/lib/ufo/stack/builder.rb +0 -26
  434. data/lib/ufo/stack/context.rb +0 -253
  435. data/lib/ufo/stack/helper.rb +0 -48
  436. data/lib/ufo/stack/template_body.rb +0 -13
  437. data/lib/ufo/stack.rb +0 -213
  438. data/lib/ufo/status.rb +0 -56
  439. data/lib/ufo/stop.rb +0 -49
  440. data/lib/ufo/task.rb +0 -225
  441. data/lib/ufo/tasks/builder.rb +0 -40
  442. data/lib/ufo/tasks/register.rb +0 -90
  443. data/lib/ufo/template_scope.rb +0 -57
  444. data/lib/ufo/util.rb +0 -69
  445. data/spec/lib/apps_spec.rb +0 -20
  446. data/spec/lib/builder_spec.rb +0 -23
  447. data/spec/lib/cli_spec.rb +0 -73
  448. data/spec/lib/completion_spec.rb +0 -18
  449. data/spec/lib/ps_spec.rb +0 -14
  450. data/spec/lib/register_spec.rb +0 -49
  451. data/spec/lib/setting_spec.rb +0 -18
  452. data/spec/lib/ship_spec.rb +0 -46
  453. data/spec/lib/stack/status_spec.rb +0 -76
  454. data/spec/lib/stop_spec.rb +0 -13
  455. data/spec/lib/task_spec.rb +0 -54
@@ -0,0 +1,80 @@
1
+ class Ufo::CLI::Central
2
+ class Update
3
+ include Ufo::Utils::Logging
4
+ include Ufo::Utils::Execute
5
+ include Ufo::Utils::Sure
6
+
7
+ def initialize(options={})
8
+ @options = options
9
+ end
10
+
11
+ def run
12
+ action = File.exist?(".ufo") ? "update" : "create"
13
+ sure?("Will #{action} the .ufo folder.") # IE: Will create the .ufo folder.
14
+ validate!
15
+ logger.info "Updating .ufo with #{repo}"
16
+ FileUtils.mkdir_p(tmp_area)
17
+ pull
18
+ sync
19
+ check_gitignore
20
+ end
21
+
22
+ def pull
23
+ logger.debug "Within #{tmp_area}"
24
+ Dir.chdir(tmp_area) do
25
+ if File.exist?(repo_name)
26
+ execute "cd #{repo_name} && git pull"
27
+ else
28
+ execute "git clone #{repo}"
29
+ end
30
+ end
31
+ end
32
+
33
+ def sync
34
+ FileUtils.mv(".ufo", ".ufo.bak") if File.exist?(".ufo")
35
+ src = "#{tmp_area}/#{repo_name}"
36
+ src += "/#{folder}" if folder
37
+ FileUtils.cp_r(src, ".ufo")
38
+ FileUtils.rm_rf(".ufo.bak")
39
+ logger.info "The .ufo folder has been updated"
40
+ end
41
+
42
+ def validate!
43
+ return if repo
44
+ logger.info "ERROR: Please set the env var: UFO_CENTRAL_REPO".color(:red)
45
+ exit 1
46
+ end
47
+
48
+ def repo_name
49
+ File.basename(repo)
50
+ end
51
+
52
+ def repo
53
+ ENV['UFO_CENTRAL_REPO']
54
+ end
55
+
56
+ def folder
57
+ ENV['UFO_CENTRAL_FOLDER']
58
+ end
59
+
60
+ def tmp_area
61
+ "/tmp/ufo/central"
62
+ end
63
+
64
+ def check_gitignore
65
+ ok = true
66
+ if File.exist?('.gitignore')
67
+ lines = IO.readlines('.gitignore')
68
+ ok = lines.detect do |line|
69
+ line =~ %r{/?.ufo/?$}
70
+ end
71
+ end
72
+ return if ok
73
+ logger.info "No .ufo found in your .gitignore file".color(:yellow)
74
+ logger.info <<~EOL
75
+ It's recommended to add .ufo to the .gitignore
76
+ When using ufo in a central fashion
77
+ EOL
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,12 @@
1
+ class Ufo::CLI
2
+ class Central < Ufo::Command
3
+ opts = Opts.new(self)
4
+
5
+ desc "update", "update .ufo from central repo"
6
+ long_desc Help.text("central/update")
7
+ opts.yes
8
+ def update
9
+ Update.new(options).run
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require "fileutils"
2
+
3
+ class Ufo::CLI
4
+ class Clean < Base
5
+ def run
6
+ folders = %w[log output tmp]
7
+ folders = folders.map do |folder|
8
+ ".ufo/#{folder}"
9
+ end
10
+ sure?("Will remove folders: #{folders.join(' ')}")
11
+ folders.each do |folder|
12
+ FileUtils.rm_rf("#{Ufo.root}/#{folder}")
13
+ end
14
+ logger.info "Removed folders: #{folders.join(' ')}"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ class Ufo::CLI
2
+ class Destroy < Base
3
+ def run
4
+ are_you_sure?
5
+
6
+ stack = find_stack(@stack_name)
7
+ unless stack
8
+ puts "Stack #{@stack_name.color(:green)} does not exist."
9
+ exit 1
10
+ end
11
+
12
+ if stack.stack_status =~ /_IN_PROGRESS$/
13
+ puts "Cannot destroy service #{@service.color(:green)}"
14
+ puts "Cannot delete stack #{@stack_name.color(:green)} in this state: #{stack.stack_status.color(:green)}"
15
+ puts "If the stack is taking a long time, you can cancel the current operation with:"
16
+ puts " ufo cancel #{@service}"
17
+ return
18
+ end
19
+
20
+ cloudformation.delete_stack(stack_name: @stack_name)
21
+ puts "Deleting stack with ECS resources: #{@stack_name}"
22
+
23
+ return unless @options[:wait]
24
+ status.wait
25
+ end
26
+
27
+ def are_you_sure?
28
+ sure?("You are about to destroy the #{@stack_name.color(:green)} stack")
29
+ end
30
+ end
31
+ end
@@ -1,57 +1,57 @@
1
- module Ufo
2
- class Docker < Command
1
+ class Ufo::CLI
2
+ class Docker < Ufo::Command
3
3
  desc "build", "Build docker image."
4
- long_desc Help.text("docker:build")
4
+ long_desc Help.text("docker/build")
5
5
  option :push, type: :boolean, default: false
6
6
  def build
7
- builder = Docker::Builder.new(options)
7
+ builder = Ufo::Docker::Builder.new(options)
8
8
  builder.build
9
9
  push if options[:push]
10
10
  end
11
11
 
12
12
  desc "compile", "Compile Dockerfile.erb"
13
- long_desc Help.text("docker:compile")
13
+ long_desc Help.text("docker/compile")
14
14
  def compile
15
- builder = Docker::Builder.new(options)
15
+ builder = Ufo::Docker::Builder.new(options)
16
16
  builder.compile
17
17
  end
18
18
 
19
19
  desc "push IMAGE", "Push the docker image."
20
- long_desc Help.text("docker:push")
20
+ long_desc Help.text("docker/push")
21
21
  option :push, type: :boolean, default: false
22
- def push(full_image_name=nil)
23
- # full_image_name of nil results in defaulting to the last built image by ufo docker build
24
- pusher = Docker::Pusher.new(full_image_name, options)
22
+ def push(docker_image=nil)
23
+ # docker_image of nil results in defaulting to the last built image by ufo docker build
24
+ pusher = Ufo::Docker::Pusher.new(docker_image, options)
25
25
  pusher.push
26
26
  end
27
27
 
28
28
  desc "base", "Build docker image from `Dockerfile.base` and update current `Dockerfile`."
29
- long_desc Help.text("docker:base")
29
+ long_desc Help.text("docker/base")
30
30
  option :push, type: :boolean, default: true
31
31
  def base
32
- builder = Docker::Builder.new(options.dup.merge(
32
+ builder = Ufo::Docker::Builder.new(options.dup.merge(
33
33
  image_namespace: "base",
34
34
  dockerfile: "Dockerfile.base"
35
35
  ))
36
36
  builder.build
37
37
  builder.push if options[:push]
38
38
  builder.update_dockerfile
39
- Docker::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
40
- Ecr::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
39
+ Ufo::Docker::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
40
+ Ufo::Ecr::Cleaner.new(builder.image_name, options.merge(tag_prefix: "base")).cleanup
41
41
  end
42
42
 
43
43
  desc "name", "Display the full docker image with tag that was last generated."
44
44
  option :generate, type: :boolean, default: false, desc: "Generate a name without storing it"
45
- long_desc Help.text("docker:name")
45
+ long_desc Help.text("docker/name")
46
46
  def name
47
- full_image_name = Docker::Builder.new(options).full_image_name
48
- puts full_image_name
47
+ docker_image = Ufo::Docker::Builder.new(options).docker_image
48
+ puts docker_image
49
49
  end
50
50
 
51
51
  desc "clean IMAGE_NAME", "Clean up old images. Keeps a specified amount."
52
52
  option :keep, type: :numeric, default: 3
53
53
  option :tag_prefix, default: "ufo"
54
- long_desc Help.text("docker:clean")
54
+ long_desc Help.text("docker/clean")
55
55
  def clean(image_name)
56
56
  Docker::Cleaner.new(image_name, options).cleanup
57
57
  end
@@ -0,0 +1,82 @@
1
+ class Ufo::CLI
2
+ class Exec < Base
3
+ def run
4
+ check_install!
5
+ service = info.service
6
+ return unless service # brand new deploy
7
+
8
+ running = service_tasks.select do |task|
9
+ task.last_status == "RUNNING"
10
+ end
11
+ if running.empty?
12
+ logger.info "No running tasks found to exec into"
13
+ return
14
+ end
15
+
16
+ tasks = running.sort_by { |t| t.started_at }
17
+ task = tasks.last # most recent
18
+
19
+ task_name = task.task_arn.split('/').last
20
+ execute_command(
21
+ cluster: "#{@cluster}",
22
+ task: task_name,
23
+ container: container(task), # only required if multiple containers in a task
24
+ interactive: true,
25
+ command: command
26
+ )
27
+ end
28
+
29
+ def container(task)
30
+ return @options[:container] if @options[:container]
31
+ containers = task.containers
32
+ container = containers.find do |c|
33
+ c.name == @options[:role]
34
+ end
35
+ container ||= containers.first # assume first task if not roles match
36
+ container.name if container
37
+ end
38
+
39
+ def execute_command(options={})
40
+ args = options.inject('') do |args, (k,v)|
41
+ arg = k == :interactive ? "--#{k}" : "--#{k} #{v}"
42
+ args += " #{arg}"
43
+ end
44
+ sh "aws ecs execute-command#{args}"
45
+ end
46
+
47
+ def service_tasks
48
+ service_name = info.service.service_name
49
+ all_task_arns = ecs.list_tasks(cluster: @cluster, service_name: service_name).task_arns
50
+ return [] if all_task_arns.empty?
51
+ ecs.describe_tasks(cluster: @cluster, tasks: all_task_arns).tasks
52
+ end
53
+
54
+ def sh(command)
55
+ puts "=> #{command}"
56
+ Kernel.exec command
57
+ end
58
+
59
+ def command
60
+ @options[:command] || Ufo.config.exec.command
61
+ end
62
+
63
+ def check_install!
64
+ check_session_manager_plugin!
65
+ check_aws_cli!
66
+ end
67
+
68
+ def check_session_manager_plugin!
69
+ installed = system "type session-manager-plugin > /dev/null 2>&1"
70
+ return if installed
71
+ logger.error "ERROR: The Session Manager plugin required to use ufo exec".color(:red)
72
+ exit 1
73
+ end
74
+
75
+ def check_aws_cli!
76
+ installed = system "type aws > /dev/null 2>&1"
77
+ return if installed
78
+ logger.error "ERROR: aws cli is required to use ufo exec".color(:red)
79
+ exit 1
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,20 @@
1
+ The `UFO_CENTRAL_REPO` env var is required to use `ufo central update`.
2
+
3
+ ## Example
4
+
5
+ $ export UFO_CENTRAL_REPO=git@github.com:org/repo
6
+ $ ufo central update
7
+ Will create the .ufo folder.
8
+ Are you sure? (y/N) y
9
+ Updating .ufo with git@github.com:org/repo
10
+ => git clone git@github.com:org/repo
11
+ The .ufo folder has been updated
12
+ $
13
+
14
+ ## Subfolders
15
+
16
+ If the ufo folder is within a subfolder.
17
+
18
+ export UFO_CENTRAL_FOLDER=subfolder
19
+
20
+ This will copy over the subfolder within the repo.
File without changes
File without changes
@@ -0,0 +1,9 @@
1
+ ## Examples
2
+
3
+ Deletes the CloudFormation stack and destroys the ECS Service resources.
4
+
5
+ ufo destroy
6
+
7
+ If you would like to bypass the prompt, you can use the `-y` option.
8
+
9
+ ufo destroy -y
@@ -0,0 +1,39 @@
1
+ The docker cache task builds a docker image using the `Dockerfile.base` file and
2
+ updates the FROM `Dockerfile` image with the generated image from `Dockerfile.base`.
3
+
4
+ ## Summarized Example
5
+
6
+ ufo docker base
7
+ ufo docker base --no-push # do not push the image to the registry
8
+
9
+ Docker image `org/repo:base-2016-10-21T15-50-57-88071f5` built.
10
+
11
+ ## Detailed Example
12
+
13
+ Let's see the command in action:
14
+
15
+ $ ufo docker base
16
+ Building docker image with:
17
+ docker build -t org/repo:base-2017-06-12T14-36-44-2af505e -f Dockerfile.base .
18
+ ...
19
+ Pushed org/repo:base-2017-06-12T14-36-44-2af505e docker image. Took 28s.
20
+ The Dockerfile FROM statement has been updated with the latest base image:
21
+ org/repo:base-2017-06-12T14-36-44-2af505e
22
+
23
+ Some of the output has been excluded so we can focus on the essential parts to point out. First, notice that the command simply shells out to the docker command and calls:
24
+
25
+ docker build -t org/repo:base-2017-06-12T14-36-44-2af505e -f Dockerfile.base .
26
+
27
+ It uses the docker `-f Dockerfile.base` option to build the base image. It names the image with `org/repo:base-2017-06-12T14-36-44-2af505e`. The image tag contains useful information: the timestamp and exact git sha of the code. The image gets pushed to a registry immediately.
28
+
29
+ ## Dockerfile FROM updated
30
+
31
+ Notice at the very end, the *current* `Dockerfile`'s FROM statement has been updated with the newly built base Docker image automatically. This saves you from forgetting to copy and paste it the `Dockerfile` yourself.
32
+
33
+ If you're using a [Dockerfile.erb](https://ufoships.com/docs/extras/dockerfile-erb/), then ufo will update the `.ufo/state/data.yml` file instead. It assumes you're using a `Dockerfile.erb` that looks something like this:
34
+
35
+ ```Dockerfile
36
+ FROM <%= @base_image %>
37
+ # ...
38
+ CMD ["bin/web"]
39
+ ```
@@ -1,16 +1,16 @@
1
- The `ufo docker build` builds a Docker image using the Dockerfile in the current project folder. This simply is a wrapper command that shells out and calls the `docker` command. We're use the [tongueroo/demo-ufo](https://github.com/tongueroo/demo-ufo) project and it's Dockerfile for demonstration. Example:
1
+ The `ufo docker build` builds a Docker image using the Dockerfile in the current project folder. This simply is a wrapper command that shells out and calls the `docker` command. We're use the [org/repo](https://github.com/org/repo) project and it's Dockerfile for demonstration. Example:
2
2
 
3
3
  ufo docker build
4
4
 
5
5
  You'll see that it calls:
6
6
 
7
- docker build -t tongueroo/demo-ufo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
7
+ docker build -t org/repo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
8
8
 
9
9
  You should see similar output (some of the output has been truncated for conciseness):
10
10
 
11
11
  $ ufo docker build
12
12
  Building docker image with:
13
- docker build -t tongueroo/demo-ufo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
13
+ docker build -t org/repo:ufo-2017-06-11T22-18-03-a18aa30 -f Dockerfile .
14
14
  Sending build context to Docker daemon 734.2 kB
15
15
  Step 1 : FROM ruby:2.3.3
16
16
  ---> 0e1db669d557
@@ -37,7 +37,7 @@ You should see similar output (some of the output has been truncated for concise
37
37
  ---> 8547bb48b21f
38
38
  Removing intermediate container b1b26e68d957
39
39
  Successfully built 8547bb48b21f
40
- Docker image tongueroo/demo-ufo:ufo-2017-06-11T22-18-03-a18aa30 built. Took 33s.
40
+ Docker image org/repo:ufo-2017-06-11T22-18-03-a18aa30 built. Took 33s.
41
41
  $
42
42
 
43
43
  The docker image tag that is generated contains a useful timestamp and the current HEAD git sha of the project that you are on.
@@ -48,14 +48,14 @@ By default when you are running `ufo docker build` directly it does not push the
48
48
 
49
49
  You should see it being pushed at the end:
50
50
 
51
- Docker image tongueroo/demo-ufo:ufo-2017-06-11T22-22-32-a18aa30 built. Took 34s.
52
- The push refers to a repository [docker.io/tongueroo/demo-ufo]
51
+ Docker image org/repo:ufo-2017-06-11T22-22-32-a18aa30 built. Took 34s.
52
+ The push refers to a repository [docker.io/org/repo]
53
53
  ef375857f165: Pushed
54
54
  4d791d7cde66: Pushed
55
55
  277ff31e79b4: Layer already exists
56
56
  a361a4de05df: Layer already exists
57
57
  ufo-2017-06-11T22-22-32-a18aa30: digest: sha256:c5385a5084e87643bd943eb120e110321c59e8acd30736ba7b5223eb1143baa8 size: 3464
58
- Pushed tongueroo/demo-ufo:ufo-2017-06-11T22-22-32-a18aa30 docker image. Took 9s.
58
+ Pushed org/repo:ufo-2017-06-11T22-22-32-a18aa30 docker image. Took 9s.
59
59
 
60
60
  Note in order to push the image to a registry you will need to login into the registry. If you are using DockerHub use the `docker login` command. If you are using AWS ECR then you can use the `aws ecr get-login` command.
61
61
 
@@ -65,6 +65,6 @@ You can specify docker build options with the `UFO_DOCKER_BUILD_OPTIONS` environ
65
65
 
66
66
  $ UFO_DOCKER_BUILD_OPTIONS="--build-arg RAILS_ENV=production" ufo docker build
67
67
  Building docker image with:
68
- docker build --build-arg RAILS_ENV=production -t tongueroo/demo-ufo:ufo-2018-05-19T11-52-16-6714713 -f Dockerfile .
68
+ docker build --build-arg RAILS_ENV=production -t org/repo:ufo-2018-05-19T11-52-16-6714713 -f Dockerfile .
69
69
  ...
70
- Docker image tongueroo/demo-ufo:ufo-2018-05-19T11-52-16-6714713 built. Took 2s.
70
+ Docker image org/repo:ufo-2018-05-19T11-52-16-6714713 built. Took 2s.
@@ -2,19 +2,19 @@ Ufo comes with a handy command to clean up old images that ufo generates. Ufo on
2
2
 
3
3
  Say you currently have these images:
4
4
 
5
- tongueroo/demo-ufo:ufo-2016-10-15T19-29-06-88071f5
6
- tongueroo/demo-ufo:ufo-2016-10-16T19-29-06-88071f5
7
- tongueroo/demo-ufo:ufo-2016-10-17T19-29-06-88071f5
8
- tongueroo/demo-ufo:ufo-2016-10-18T19-29-06-88071f5
5
+ org/repo:ufo-2016-10-15T19-29-06-88071f5
6
+ org/repo:ufo-2016-10-16T19-29-06-88071f5
7
+ org/repo:ufo-2016-10-17T19-29-06-88071f5
8
+ org/repo:ufo-2016-10-18T19-29-06-88071f5
9
9
 
10
10
  To clean them up and keep the 3 more recent:
11
11
 
12
- $ ufo docker clean tongueroo/demo-ufo
12
+ $ ufo docker clean org/repo
13
13
  Cleaning up docker images...
14
- Running: docker rmi tongueroo/demo-ufo:ufo-2016-10-15T19-29-06-88071f5
14
+ Running: docker rmi org/repo:ufo-2016-10-15T19-29-06-88071f5
15
15
 
16
- This will remove tongueroo/demo-ufo:ufo-2016-10-15T19-29-06-88071f5.
16
+ This will remove org/repo:ufo-2016-10-15T19-29-06-88071f5.
17
17
 
18
18
  By default the clean command keeps the most 3 recent docker images. If you would like to override this setting you can use the `--keep` option. Example:
19
19
 
20
- ufo docker clean tongueroo/demo-ufo --keep 5
20
+ ufo docker clean org/repo --keep 5
File without changes
@@ -0,0 +1,16 @@
1
+ It is sometimes handy to grab the name of the Docker image that was just generated. Let's say ou needed the image name so you can feed it into another script that you have. The command `ufo docker name` returns the image of the most recently built Docker image.
2
+
3
+ ## Examples
4
+
5
+ ufo docker build # stores the docker image name in the .ufo/tmp/state folder
6
+ ufo docker name # fetches image name from .ufo/tmp/state folder
7
+
8
+ An example image name would look something like this: `org/repo:ufo-2018-02-15T19-29-06-88071f5`
9
+
10
+ Note, the `.ufo/tmp/state` folder is an internal data folder and it's structure can change in future releases.
11
+
12
+ If you want to generate a brand new name for whatever purpose, you can use the `--generate` flag. The generate does not write to the `.ufo/tmp/state` folder. It only generates a fresh name to stdout. If you run it multiple times, it will generate new names. You can notice this by seeing that the timestamp will always update:
13
+
14
+ ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-00-88071f5
15
+ ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-08-88071f5
16
+ ufo docker name --generate # example: org/repo:ufo-2018-02-15T10-00-16-88071f5
File without changes
@@ -0,0 +1,6 @@
1
+ ## Examples
2
+
3
+ ufo docker base
4
+ ufo docker build
5
+ ufo docker name
6
+ ufo docker push
@@ -2,4 +2,4 @@ Displays process information about the service.
2
2
 
3
3
  ## Examples
4
4
 
5
- $ ufo ps demo-web
5
+ ufo ps
@@ -0,0 +1,27 @@
1
+ The `ufo init` command setup a project to be ufo ready. It creates a `.ufo` folder with a starter structure.
2
+
3
+ The command requires the `--image` option. If the `--app` option is not provided, then it is inferred and set as the parent folder name. Example:
4
+
5
+ cd demo
6
+ ufo init --app demo --image org/repo
7
+ ufo init --image org/repo # same as --app demo
8
+
9
+ ## Examples
10
+
11
+ $ mkdir demo
12
+ $ cd demo
13
+ $ ufo init --app demo --image org/repo
14
+ Generating .ufo structure
15
+ create .ufo/config.rb
16
+ create .ufo/config/web/base.rb
17
+ create .ufo/config/web/dev.rb
18
+ create .ufo/config/web/prod.rb
19
+ create .ufo/resources/iam_roles/execution_role.rb
20
+ create .ufo/resources/iam_roles/task_role.rb
21
+ create .ufo/resources/task_definitions/web.yml
22
+ create .ufo/vars/base.rb
23
+ create .ufo/vars/dev.rb
24
+ create .ufo/vars/prod.rb
25
+ create .gitignore
26
+ create .dockerignore
27
+ create Dockerfile
@@ -1,10 +1,11 @@
1
1
  ## Examples
2
2
 
3
- ufo logs demo-web
3
+ ufo logs
4
4
 
5
- If you have a current service name set.
6
-
7
- ufo current --service demo-web
8
5
  ufo logs # follow by default
9
6
  ufo logs --no-follow
10
7
  ufo logs --format detailed # to show stream too
8
+
9
+ Filter HealthChecker
10
+
11
+ ufo logs --filter-pattern '- "HealthChecker"'
@@ -0,0 +1,12 @@
1
+ ## Examples
2
+
3
+ $ ufo ps
4
+ Stack: demo-web-dev
5
+ Service: demo-web-dev-EcsService-6Tb9EQqC23HA
6
+ Tasks: Running: 1 Desired: 1 Min: 1 Max: 2
7
+ Application ELB: demo-we-Elb-7DSB8ODFY8QP-1678773019.us-west-2.elb.amazonaws.com
8
+ +----------------------------------+------+-----------------+----------------+---------+
9
+ | Task | Name | Release | Started | Status |
10
+ +----------------------------------+------+-----------------+----------------+---------+
11
+ | 3ea2ec8300ef49ab8d0071568525eb33 | web | demo-web-dev:55 | 26 seconds ago | RUNNING |
12
+ +----------------------------------+------+-----------------+----------------+---------+
@@ -0,0 +1,15 @@
1
+ ## Example
2
+
3
+ $ ufo releases
4
+ Latest task definitions for stack: demo-web-dev
5
+ demo-web-dev:55
6
+ demo-web-dev:54
7
+ demo-web-dev:53
8
+ demo-web-dev:52
9
+ demo-web-dev:51
10
+ demo-web-dev:50
11
+ demo-web-dev:49
12
+ demo-web-dev:48
13
+ demo-web-dev:47
14
+ demo-web-dev:46
15
+ demo-web-dev:45
@@ -0,0 +1,40 @@
1
+ ## Examples
2
+
3
+ You only need to specific the task definition version number, though you can specify the name also
4
+
5
+ $ ufo rollback 54
6
+ Will rollback to task definition version: 54
7
+ Are you sure? (y/N) y
8
+ Rolling back ECS service to task definition demo-web-dev:54
9
+ Will deploy stack demo-web-dev
10
+ Parameters built: .ufo/output/params.json
11
+ Template built: .ufo/output/template.yml
12
+ Updating stack demo-web-dev
13
+ Waiting for stack to complete
14
+ 06:17:01PM UPDATE_IN_PROGRESS AWS::CloudFormation::Stack demo-web-dev User Initiated
15
+ 06:17:08PM UPDATE_IN_PROGRESS AWS::ECS::Service EcsService
16
+ ..
17
+
18
+ To see recent task definitions:
19
+
20
+ ufo releases
21
+
22
+ Note, task definitions get created by many ways with more than just `ufo ship`. So it the previous version might not be the latest version number minus one.
23
+
24
+ ## Using image name
25
+
26
+ Another way to specify the version for rollback is with the container definition's image value. Here's the portion of the ecs task definition that you would look for:
27
+
28
+ ...
29
+ "container_definitions": [
30
+ {
31
+ "name": "web",
32
+ "image": "org/repo:ufo-2018-06-21T15-03-52-ac60240",
33
+ "cpu": 256,
34
+ ...
35
+
36
+ You need to specify enough for a match to be found. Ufo searches the 30 most recent task definitions. So all of these would work:
37
+
38
+ ufo rollback org/repo:ufo-2018-06-21T15-03-52-ac60240
39
+ ufo rollback 2018-06-21T15-03-52
40
+ ufo rollback ac60240
@@ -0,0 +1,7 @@
1
+ Ufo provides a command to scale up and down an ECS service quickly. However, the scaling configuration is only a temporary update until the next `ufo ship`.
2
+
3
+ ufo scale --desired 2
4
+
5
+ If you've configured ECS Service AutoScaling with ufo then you can also update the Scaling configuration.
6
+
7
+ ufo scale --min 1 --max 2