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,86 +0,0 @@
1
- ---
2
- title: Setup Ufo
3
- nav_order: 5
4
- ---
5
-
6
- The easiest way to create this ufo folder is by using the `ufo init` command. For this tutorial we'll [tongueroo/demo-ufo](https://github.com/tongueroo/demo-ufo) which is a small test sinatra app.
7
- Let's run the command in our newly cloned project.
8
-
9
- ```sh
10
- git clone https://github.com/tongueroo/demo-ufo.git
11
- cd demo-ufo
12
- ufo init --app=demo --image=tongueroo/demo-ufo
13
- ```
14
-
15
- You should see output similiar to this:
16
-
17
- ```sh
18
- $ ufo init --app=demo --image=tongueroo/demo-ufo
19
- Setting up ufo project...
20
- create .env
21
- create .ufo/params.yml
22
- create .ufo/settings.yml
23
- create .ufo/settings/cfn/default.yml
24
- create .ufo/settings/network/default.yml
25
- create .ufo/task_definitions.rb
26
- create .ufo/templates/fargate.json.erb
27
- create .ufo/templates/main.json.erb
28
- create .ufo/variables/base.rb
29
- create .ufo/variables/development.rb
30
- create .ufo/variables/production.rb
31
- identical Dockerfile
32
- create bin/deploy
33
- append .gitignore
34
- create .dockerignore
35
- Starter ufo files created.
36
- Congrats 🎉 You have successfully set up ufo for your project.
37
- $
38
- ```
39
-
40
- The `ufo init` command generated a few starter ufo files for you. The standard directory structure of the ufo folder looks like this:
41
-
42
- ```sh
43
- .ufo
44
- ├── output
45
- ├── settings.yml
46
- ├── task_definitions.rb
47
- ├── templates
48
- | └── main.json.erb
49
- └── variables
50
- ├── base.rb
51
- ├── production.rb
52
- └── development.rb
53
- ```
54
-
55
- The explanation of the folders and files were covered in detailed earlier at [Structure]({% link _docs/structure.md %}).
56
-
57
- ## Settings
58
-
59
- Take a look at the `settings.yml` file and notice that it contains some default configuration settings so you do not have to type out these options repeatedly for some of the ufo commands.
60
-
61
- ```yaml
62
- # More info: http://ufoships.com/docs/settings/
63
- base:
64
- image: tongueroo/demo-ufo
65
- # clean_keep: 30 # cleans up docker images on your docker server.
66
- # ecr_keep: 30 # cleans up images on ECR and keeps this remaining amount. Defaults to keep all.
67
- # defaults when an new ECS service is created by ufo ship
68
-
69
- development:
70
- # cluster: dev # uncomment if you want the cluster name be other than the default
71
- # the default is to match UFO_ENV. So UFO_ENV=development means the ECS
72
- # cluster will be name development
73
- # When you have AWS_PROFILE set to one of these values, ufo will switch to the desired
74
- # environment. This prevents you from switching AWS_PROFILE, forgetting to
75
- # also switch UFO_ENV, and accidentally deploying to production vs development.
76
- # aws_profile: dev_profile1
77
-
78
- production:
79
- # cluster: prod
80
- ```
81
-
82
- The `image` value is the name that ufo will use as a base portion of the name to generate a Docker image name, it should not include the tag portion.
83
-
84
- The other settings are optional. You can learn more about them at [Settings]({% link _docs/settings.md %}).
85
-
86
- {% include prev_next.md %}
@@ -1,95 +0,0 @@
1
- ---
2
- title: Deploy One App
3
- nav_order: 8
4
- ---
5
-
6
- ## Step 3 - Ship the Code to ECS
7
-
8
- In this guide we have walked through what ufo does step by step. First ufo builds the Docker image with `ufo docker build`. Then it will build and register the ECS task definitions with the `ufo tasks` commands. Now we'll deploy the code to ECS.
9
-
10
- ```sh
11
- ufo ship demo-web
12
- ```
13
-
14
- By convention, ufo will ship the docker container to an ECS cluster with the same value as UFO_ENV, which defaults to development. So the command above is the same as:
15
-
16
- ```sh
17
- ufo ship demo-web --cluster development
18
- UFO_ENV=development ufo ship demo-web
19
- ```
20
-
21
- When you run `ufo ship demo-web`:
22
-
23
- 1. It builds the docker image.
24
- 2. Generates a task definition and registers it.
25
- 3. Updates the ECS service to use it.
26
-
27
- If the ECS service demo-web does not yet exist, ufo will create the service for you. Ufo will also automatically create the ECS cluster.
28
-
29
- NOTE: Ufo creates the ECS cluster record, but you still need to associate ECS Container Instances to the cluster yourself.
30
-
31
- By convention, if the service has a container name web, ufo will automatically create an Load Balancer. Let's take a look at the example out from the `ufo ship`. Some of the output has been removed for conciseness.
32
-
33
- ```sh
34
- $ ufo ship demo-web
35
- Building docker image with:
36
- docker build -t tongueroo/demo-ufo:ufo-2018-06-28T16-41-11-7e0af94 -f Dockerfile .
37
- ...
38
- Deploying demo-web...
39
- Ensuring log group for demo-web task definition exists
40
- Log group name: ecs/demo-web
41
- Creating stack development-demo-web...
42
- Generated template saved at: /tmp/ufo/development-demo-web/stack.yml
43
- Generated parameters saved at: /tmp/ufo/development-demo-web/parameters.yml
44
- 04:41:27PM CREATE_IN_PROGRESS AWS::CloudFormation::Stack development-demo-web User Initiated
45
- 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup
46
- 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup
47
- 04:41:31PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup
48
- 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup Resource creation Initiated
49
- 04:41:32PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup Resource creation Initiated
50
- 04:41:32PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup Resource creation Initiated
51
- ...
52
- 04:44:46PM CREATE_COMPLETE AWS::ECS::Service Ecs
53
- 04:44:48PM CREATE_COMPLETE AWS::CloudFormation::Stack development-demo-web
54
- Stack success status: CREATE_COMPLETE
55
- Time took for stack deployment: 3m 22s.
56
- Software shipped!
57
- $
58
- ```
59
-
60
- Checking the ECS console you should see something like this:
61
-
62
- <img src="/img/tutorials/ecs-console-ufo-ship.png" class="doc-photo" />
63
-
64
- You have successfully deployed a Docker image to ECS! 🍾🥂
65
-
66
- ## Checking ECS Service
67
-
68
- Another way to check that the ECS service is running is with the `ufo ps` command.
69
-
70
- $ ufo ps demo-web
71
- => Service: demo-web
72
- Service name: development-demo-web-Ecs-12DRF2703Z3D2
73
- Status: ACTIVE
74
- Running count: 1
75
- Desired count: 1
76
- Launch type: EC2
77
- Task definition: demo-web:82
78
- Elb: develop-Elb-ZY1VARS3KP14-2141687965.us-east-1.elb.amazonaws.com
79
- +----------+------+-------------+---------------+---------+-------+
80
- | Id | Name | Release | Started | Status | Notes |
81
- +----------+------+-------------+---------------+---------+-------+
82
- | e4426421 | web | demo-web:82 | 5 minutes ago | RUNNING | |
83
- +----------+------+-------------+---------------+---------+-------+
84
-
85
- ## Ufo Current Tip
86
-
87
- We've been typing the `demo-web` service name explicitly. We can set the current service with the `ufo current` command to save us from typing each time. Example:
88
-
89
- ufo current --service demo-web
90
- ufo ship # now same as ufo ship demo-web
91
- ufo ps # now same as ufo ps demo-web
92
-
93
- Congratulations 🎊 You have successfully built a Docker image, register it and deployed it to AWS ECS.
94
-
95
- {% include prev_next.md %}
@@ -1,38 +0,0 @@
1
- ---
2
- title: Deploy Multiple Apps
3
- nav_order: 9
4
- ---
5
-
6
- You might have noticed in the tutorial that the generated starter .ufo folder contains 3 task definitions a `web`, `worker` and `clock` role. This is a common pattern. The web process handles web traffic, the worker process handles background job processing that would be too slow and potentially block web requests, and a clock process is typically used to schedule recurring jobs.
7
-
8
- These processes typically use the same codebase and same docker image, but have slightly different run time settings. The docker run command for a web process could be [puma](http://puma.io/) and the command for a worker process could be [sidekiq](http://sidekiq.org/). Environment variables are also sometimes different. The important key is that the same docker image is used for all 3 services but the task definition for each service is slightly different.
9
-
10
- While we can use the `ufo ship` command to deploy to all 3 service roles individually like so:
11
-
12
- ```sh
13
- ufo ship demo-web
14
- ufo ship demo-worker
15
- ufo ship demo-clock
16
- ```
17
-
18
- This would build a new Docker image for each process. We actually want have the same docker image running on all of these roles. In this case where we want to use the *same* Docker image for all 3 roles, ufo provides a `ufo ships` command.
19
-
20
- ## ufo ships
21
-
22
- ```sh
23
- ufo ships demo-web demo-worker demo-clock
24
- ```
25
-
26
- You can check on the ECS console and should see something similar to this:
27
-
28
- <img src="/img/tutorials/ecs-console-ufo-ships.png" class="doc-photo" />
29
-
30
- You can shorten the command by taking advantage of shell expansion:
31
-
32
- ```sh
33
- ufo ships demo-{web,worker,clock}
34
- ```
35
-
36
- In the case of the `ufo ships` command the `--wait` option defaults to false so that all the specified ECS services update in parallel. You can check on the status of the update on the CloudFormation console.
37
-
38
- {% include prev_next.md %}
@@ -1,177 +0,0 @@
1
- ---
2
- title: Task Definitions
3
- nav_order: 7
4
- ---
5
-
6
- ## Build the ECS Task Definitions
7
-
8
- Now that we have a Docker image pushed to a registry we can use that image for ECS. Ufo takes that image and adds it to an ECS task definition. This is where ufo is powerful. Ufo gives you the power to build and control your ECS task definition directly.
9
-
10
- Let's take a look at the files that are used by ufo to build the ECS task definition. These files were generated by the `ufo init` command at the beginning.
11
-
12
- 1. `.ufo/templates/main.json.erb`
13
- 2. `.ufo/task_definitions.rb`
14
-
15
- Ufo task definitions are written as an ERB template that makes it directly accessible. You can configure it to your requirements. Here is an example of an ERB template `.ufo/templates/main.json.erb` and shows how to modify the task definition:
16
-
17
- **.ufo/templates/main.json.erb**:
18
-
19
- ```json
20
- {
21
- "family": "<%= @family %>",
22
- "containerDefinitions": [
23
- {
24
- "name": "<%= @name %>",
25
- "image": "<%= @image %>",
26
- "cpu": <%= @cpu %>,
27
- <% if @memory %>
28
- "memory": <%= @memory %>,
29
- <% end %>
30
- <% if @memory_reservation %>
31
- ...
32
- "essential": true
33
- }
34
- ]
35
- }
36
- ```
37
-
38
- The instance variable values are specified in `.ufo/task_definitions.rb` via a DSL. Here's the file:
39
-
40
- **.ufo/task_definitions.rb**:
41
-
42
- ```
43
- task_definition "demo-web" do
44
- source "main" # will use ufo/templates/main.json.erb
45
- variables(
46
- family: task_definition_name,
47
- name: "web",
48
- container_port: helper.dockerfile_port,
49
- command: ["bin/web"]
50
- )
51
- end
52
-
53
- task_definition "demo-worker" do
54
- source "main" # will use ufo/templates/main.json.erb
55
- variables(
56
- family: task_definition_name,
57
- name: "worker",
58
- command: ["bin/worker"]
59
- )
60
- end
61
- ```
62
-
63
- ## Shared Variables
64
-
65
- Ufo has a concept of shared variables, covered in [Shared Variables]({% link _docs/variables.md %}). The shared variables are set in the `variables` folder and allow you to use a set of shared variables common to your templates:
66
-
67
- **.ufo/variables/base.rb**:
68
-
69
- ```ruby
70
- @image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
71
- @cpu = 256
72
- @memory_reservation = 512
73
- @environment = helper.env_file(".env")
74
- ```
75
-
76
- **.ufo/variables/development.rb**:
77
-
78
- ```ruby
79
- @environment = helper.env_vars(%Q{
80
- RAILS_ENV=development
81
- SECRET_KEY_BASE=secret
82
- })
83
- ```
84
-
85
- 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.
86
-
87
- If you need to modify the task definition template to suit your own needs it is simple, just edit `main.json.erb`. You do not have to dive deep into internal code somewhere. It is all there for you to control fully.
88
-
89
- The `task_definition.rb` has access to some useful helper methods detailed in [Helpers]({% link _docs/helpers.md %}).
90
-
91
- Let's build the task definitions:
92
-
93
- ```sh
94
- ufo tasks build
95
- ```
96
-
97
- You should see output similar to below:
98
-
99
- ```sh
100
- $ ufo tasks build
101
- Building Task Definitions...
102
- Generating Task Definitions:
103
- .ufo/output/demo-web.json
104
- .ufo/output/demo-worker.json
105
- .ufo/output/demo-clock.json
106
- Task Definitions built in .ufo/output
107
- $
108
- ```
109
-
110
- Let's take a look at one of the generated files: `.ufo/output/demo-web.json`.
111
-
112
- ```json
113
- {
114
- "family": "demo-web",
115
- "containerDefinitions": [
116
- {
117
- "name": "web",
118
- "image": "tongueroo/demo-ufo:ufo-2018-06-29T23-20-47-20b3a10",
119
- "cpu": 256,
120
- "memory": 512,
121
- "memoryReservation": 512,
122
- "portMappings": [
123
- {
124
- "containerPort": 4567,
125
- "protocol": "tcp"
126
- }
127
- ],
128
- "command": null,
129
- "environment": [
130
- {
131
- "name": "RAILS_ENV",
132
- "value": "development"
133
- },
134
- {
135
- "name": "SECRET_KEY_BASE",
136
- "value": "secret"
137
- }
138
- ],
139
- "logConfiguration": {
140
- "logDriver": "awslogs",
141
- "options": {
142
- "awslogs-group": "ecs/demo-web",
143
- "awslogs-region": "us-east-1",
144
- "awslogs-stream-prefix": "demo"
145
- }
146
- },
147
- "essential": true
148
- }
149
- ]
150
- }
151
- ```
152
-
153
- ## Register the ECS Task Definitions
154
-
155
- You have built the ECS task definitions locally on your machine. To register the task definitions in the `output` folder run:
156
-
157
- ```sh
158
- ufo tasks register
159
- ```
160
-
161
- You should see something similar to this:
162
-
163
- ```sh
164
- $ ufo tasks register
165
- Equivalent aws cli command:
166
- aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-web.json
167
- demo-web task definition registered.
168
- Equivalent aws cli command:
169
- aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-clock.json
170
- demo-clock task definition registered.
171
- Equivalent aws cli command:
172
- aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-worker.json
173
- demo-worker task definition registered.
174
- $
175
- ```
176
-
177
- {% include prev_next.md %}
@@ -1,14 +0,0 @@
1
- ---
2
- title: Tutorial
3
- nav_order: 4
4
- ---
5
-
6
- In the next sections, we'll walk through using ufo in detail. We will ufo-ify a project. Then we'll go through the step by step process that ufo automated. Normally ufo is not really used in step like fashion like in this tutorial, but going through it step by step really helps to understand how ufo works. Here are the steps we'll go through:
7
-
8
- 1. We'll build a docker image by using `ufo docker`.
9
- 2. We'll build and register the task definitions to ECS with the newly built docker images with `ufo tasks`
10
- 3. Finally, we'll use `ufo ship` to run through entire process.
11
-
12
- Let's start!
13
-
14
- {% include prev_next.md %}
@@ -1,49 +0,0 @@
1
- ---
2
- title: Ufo Current
3
- nav_order: 26
4
- ---
5
-
6
- ## service
7
-
8
- There's a handy way to shorten ufo commands by setting the current service. Example:
9
-
10
- ufo ship demo-web # normal usage
11
- ufo current --service demo-web
12
- ufo ship # no longer have to type: demo-web
13
-
14
- To view the current settings run `ufo current` with no options.
15
-
16
- $ ufo current
17
- Current env_extra: 1
18
- Current service: demo-web
19
-
20
- Setting the current service helps shorten other commands also:
21
-
22
- ufo cancel
23
- ufo deploy
24
- ufo destroy
25
- ufo ps
26
- ufo releases
27
- ufo resources
28
- ufo rollback VERSION
29
- ufo scale COUNT
30
- ufo ship
31
-
32
- ## UFO_ENV_EXTRA
33
-
34
- The UFO_ENV_EXTRA env variable allows you create multiple environments with of the same services quickly. More info about is is detailed at [ufo-env-extra]({% link _docs/ufo-env-extra.md %}). You can also set a current UFO_ENV_EXTRA with the `--env-extra` option.
35
-
36
- ufo current --env-extra 1
37
-
38
- ## services
39
-
40
- The `ufo ships` commands builds one Docker image and deploys them to multiple ECS services, so it usually takes a list of services like so:
41
-
42
- ufo ships demo-web demo-worker demo-clock
43
-
44
- This can be shorten with with current also.
45
-
46
- ufo current --services demo-web demo-worker demo-clock
47
- ufo ships
48
-
49
- {% include prev_next.md %}
@@ -1,22 +0,0 @@
1
- ---
2
- title: UFO_ENV_EXTRA
3
- nav_order: 25
4
- ---
5
-
6
- <div class="video-box"><div class="video-container"><iframe src="https://www.youtube.com/embed/UVQuwQGToYE" frameborder="0" allowfullscreen=""></iframe></div></div>
7
-
8
- Ufo has an concept of extra environments. This is controlled by the `UFO_ENV_EXTRA` variable. By setting `UFO_ENV_EXTRA` you can create additional identical ECS services or environments.
9
-
10
- ufo ship demo-web # creates a demo-web ecs service
11
- UFO_ENV_EXTRA=2 ufo ship demo-web # creates a demo-web-2 ecs service
12
-
13
- The `UFO_ENV_EXTRA` can also be set with `ufo current` so you do not have to type it over.
14
-
15
- ufo current --env-extra 1
16
-
17
- The precedence:
18
-
19
- 1. UFO_ENV_EXTRA - takes highest precedence
20
- 2. `.ufo/current` env-extra setting - takes lower precedence
21
-
22
- {% include prev_next.md %}
@@ -1,46 +0,0 @@
1
- ---
2
- title: UFO_ENV
3
- nav_order: 24
4
- ---
5
-
6
- Ufo's behavior is controlled by the `UFO_ENV` environment variable. For example, the `UFO_ENV` variable is used to layer different ufo variable files together to make it easy to specify settings for different environments like production and development. This is covered thoroughly in the [Variables]({% link _docs/variables.md %}) section. `UFO_ENV` defaults to `development` when not set.
7
-
8
- ## Setting UFO_ENV
9
-
10
- The `UFO_ENV` can be set in several ways:
11
-
12
- 1. Exported as an environment variable to your shell - This takes the second highest precedence.
13
- 2. From the `aws_profiles` setting in your `settings.yml` file - This takes the lowest precedence.
14
-
15
- ## As an environment variable
16
-
17
- ```sh
18
- export UFO_ENV=production
19
- ufo ship demo-web
20
- ```
21
-
22
- You can set `UFO_ENV` in your `~/.profile`.
23
-
24
- ## In .ufo/settings.yml
25
-
26
- The most interesting way to set `UFO_ENV` is with the `aws_profiles` setting in `.ufo/settings.yml`. Let's say you have a `~/.ufo/settings.yml` with the following:
27
-
28
- ```yaml
29
- development:
30
- aws_profile: my-dev-profile
31
-
32
- production:
33
- aws_profile: my-prod-profile
34
- ```
35
-
36
- In this case, when you set `AWS_PROFILE` to switch AWS profiles, ufo picks this up and maps the `AWS_PROFILE` value to the specified `UFO_ENV` using the `aws_profiles` lookup. Example:
37
-
38
- ```sh
39
- AWS_PROFILE=my-prod-profile => UFO_ENV=production
40
- AWS_PROFILE=my-dev-profile => UFO_ENV=development
41
- AWS_PROFILE=whatever => UFO_ENV=development # since there are no profiles that match
42
- ```
43
-
44
- Notice how `AWS_PROFILE=whatever` results in `UFO_ENV=development`. This is because there are no matching aws_profiles in the `settings.yml`. More info on settings is available at [settings]({% link _docs/settings.md %}).
45
-
46
- {% include prev_next.md %}
@@ -1,49 +0,0 @@
1
- ---
2
- title: ufo logs command
3
- nav_order: 23
4
- ---
5
-
6
- The ufo logs command will tail the logs of the ecs service if you are using the awslogs driver.
7
-
8
- ## Examples
9
-
10
- $ ufo logs demo-web
11
- 2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 +0000] "GET / HTTP/1.1" 200 3 0.0003
12
- 2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 UTC] "GET / HTTP/1.1" 200 3
13
- 2020-01-16 23:58:16 UTC - -> /
14
-
15
- ## Current Set
16
-
17
- If you have a current service name set.
18
-
19
- $ ufo current --service demo-web
20
- $ ufo logs # follow by default
21
- 2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 +0000] "GET / HTTP/1.1" 200 3 0.0003
22
- 2020-01-16 23:58:16 UTC 10.20.120.135 - - [16/Jan/2020:23:58:16 UTC] "GET / HTTP/1.1" 200 3
23
- 2020-01-16 23:58:16 UTC - -> /
24
-
25
- ## Options
26
-
27
- By default the logs follow and use the simple format without the log stream. Here's how adjust those options:
28
-
29
- ufo logs --no-follow
30
- ufo logs --format detailed # to show stream too
31
-
32
- More info: [ufo logs reference]({% link _reference/ufo-logs.md %})
33
-
34
- ## awslog driver
35
-
36
- The generated .ufo task definition defaults to the awslogs driver. If you need it, it looks like this:
37
-
38
- ```json
39
- "logConfiguration": {
40
- "logDriver": "awslogs",
41
- "options": {
42
- "awslogs-group": "<%= @awslogs_group %>",
43
- "awslogs-region": "<%= @awslogs_region || 'us-east-1' %>",
44
- "awslogs-stream-prefix": "<%= @awslogs_stream_prefix %>"
45
- }
46
- }
47
- ```
48
-
49
- {% include prev_next.md %}
@@ -1,43 +0,0 @@
1
- ---
2
- title: Ufo Task Params
3
- nav_order: 27
4
- ---
5
-
6
- You can run one off task with the [ufo task](https://ufoships.com/reference/ufo-task/) command.
7
-
8
- The `ufo task` commands:
9
-
10
- 1. Builds the docker image
11
- 2. Registers the ECS task definition
12
- 3. Runs the command
13
-
14
-
15
- The params that ufo sends to the [ruby aws-sdk](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECS/Client.html#run_task-instance_method) methods to for the one off task can be customized with a `params.yml` file. This allows you use the full power of the aws-sdk.
16
-
17
- A starter project `.ufo/params.yml` file is generated as part of the `ufo init` command. Let's take a look at an example `params.yml`:
18
-
19
- ```yaml
20
- # These params are passsed to the corresponding aws-sdk ecs client methods.
21
- # AWS Docs example: https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/ECS/Client.html#run_task-instance_method
22
- #
23
- # The network helper provides access to the .ufo/settings/network/[PROFILE].yml
24
- #
25
- # More docs: http://ufoships.com/docs/params/
26
-
27
- # ufo task calls run_tasks
28
- run_task:
29
- # network_configuration is required for FARGATE
30
- network_configuration:
31
- awsvpc_configuration:
32
- subnets: <%= network[:ecs_subnets].inspect %> # required
33
- security_groups: <%= network[:ecs_security_groups].inspect %>
34
- assign_public_ip: "ENABLED" # accepts ENABLED, DISABLED
35
- ```
36
-
37
- Ufo provides 1st class citizen access to adjust the params sent to the aws-sdk calls:
38
-
39
- ERB and [shared variables]({% link _docs/variables.md %}) are available in the params file. You can also define the subnets in your config/variables and use them in them in the params.yml file.
40
-
41
- Note, the params.yml file does not have access to the `task_definition_name` helper method. That is only available in the `task_definitions.rb` template_definition code blocks.
42
-
43
- {% include prev_next.md %}
@@ -1,21 +0,0 @@
1
- ---
2
- title: ufo tasks register
3
- ---
4
-
5
- The `ufo tasks register` command registers all the generated task definitions in `output/` to AWS ECS. Let's run it:
6
-
7
- ```sh
8
- ufo tasks register
9
- ```
10
-
11
- You should see something similiar to this:
12
-
13
- ```sh
14
- demo-clock task definition registered.
15
- demo-web task definition registered.
16
- demo-worker task definition registered.
17
- ```
18
-
19
- 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:
20
-
21
- <img src="/img/tutorials/ecs-console-task-definitions.png" class="doc-photo" />