ufo 3.5.7 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/Gemfile.lock +16 -10
  4. data/README.md +12 -13
  5. data/docs/_config.yml +1 -1
  6. data/docs/_docs/auto-completion.md +4 -4
  7. data/docs/_docs/automated-cleanup.md +1 -1
  8. data/docs/_docs/conventions.md +7 -7
  9. data/docs/_docs/customize-cloudformation.md +36 -0
  10. data/docs/_docs/faq.md +9 -7
  11. data/docs/_docs/fargate.md +102 -0
  12. data/docs/_docs/helpers.md +3 -3
  13. data/docs/_docs/load-balancer.md +72 -0
  14. data/docs/_docs/migrations.md +2 -2
  15. data/docs/_docs/next-steps.md +2 -2
  16. data/docs/_docs/params.md +12 -41
  17. data/docs/_docs/route53-support.md +28 -0
  18. data/docs/_docs/run-in-pieces.md +2 -2
  19. data/docs/_docs/security-groups.md +54 -0
  20. data/docs/_docs/settings-cfn.md +11 -0
  21. data/docs/_docs/settings-network.md +34 -0
  22. data/docs/_docs/settings.md +18 -15
  23. data/docs/_docs/single-task.md +3 -3
  24. data/docs/_docs/ssl-support.md +42 -0
  25. data/docs/_docs/structure.md +5 -1
  26. data/docs/_docs/stuck-cloudformation.md +30 -0
  27. data/docs/_docs/tutorial-ufo-docker-build.md +19 -31
  28. data/docs/_docs/tutorial-ufo-init.md +16 -12
  29. data/docs/_docs/tutorial-ufo-ship.md +50 -54
  30. data/docs/_docs/tutorial-ufo-ships.md +9 -7
  31. data/docs/_docs/tutorial-ufo-tasks-build.md +26 -17
  32. data/docs/_docs/ufo-current.md +50 -0
  33. data/docs/_docs/ufo-env-extra.md +21 -0
  34. data/docs/_docs/ufo-env.md +6 -13
  35. data/docs/_docs/ufo-tasks-register.md +3 -3
  36. data/docs/_docs/upgrade4.md +49 -0
  37. data/docs/_docs/variables.md +5 -5
  38. data/docs/_docs/why-cloudformation.md +22 -0
  39. data/docs/_includes/about.html +1 -1
  40. data/docs/_includes/cfn-customize.md +39 -0
  41. data/docs/_includes/commands.html +6 -6
  42. data/docs/_includes/css/ufo.css +1 -0
  43. data/docs/_includes/example.html +13 -13
  44. data/docs/_includes/reference.md +1 -1
  45. data/docs/_includes/subnav.html +22 -5
  46. data/docs/_includes/ufo-ship-options.md +7 -6
  47. data/docs/_reference/ufo-apps.md +36 -0
  48. data/docs/_reference/ufo-cancel.md +24 -0
  49. data/docs/_reference/ufo-completion.md +1 -1
  50. data/docs/_reference/ufo-completion_script.md +1 -1
  51. data/docs/_reference/ufo-current.md +93 -0
  52. data/docs/_reference/ufo-deploy.md +18 -17
  53. data/docs/_reference/ufo-destroy.md +6 -4
  54. data/docs/_reference/ufo-docker-base.md +7 -7
  55. data/docs/_reference/ufo-docker-build.md +9 -9
  56. data/docs/_reference/ufo-docker-clean.md +8 -8
  57. data/docs/_reference/ufo-docker-name.md +4 -4
  58. data/docs/_reference/ufo-docker.md +4 -2
  59. data/docs/_reference/ufo-init.md +31 -20
  60. data/docs/_reference/ufo-network-help.md +15 -0
  61. data/docs/_reference/ufo-network-init.md +38 -0
  62. data/docs/_reference/ufo-network.md +26 -0
  63. data/docs/_reference/ufo-ps.md +53 -0
  64. data/docs/_reference/ufo-releases.md +40 -0
  65. data/docs/_reference/ufo-resources.md +44 -0
  66. data/docs/_reference/ufo-rollback.md +59 -0
  67. data/docs/_reference/ufo-scale.md +23 -3
  68. data/docs/_reference/ufo-ship.md +54 -27
  69. data/docs/_reference/ufo-ships.md +17 -26
  70. data/docs/_reference/ufo-stop.md +31 -0
  71. data/docs/_reference/ufo-task.md +15 -16
  72. data/docs/_reference/ufo-tasks-build.md +10 -10
  73. data/docs/_reference/ufo-tasks-register.md +3 -3
  74. data/docs/_reference/ufo-tasks.md +1 -1
  75. data/docs/_reference/ufo-upgrade-help.md +15 -0
  76. data/docs/_reference/ufo-upgrade-v2to3.md +15 -0
  77. data/docs/_reference/ufo-upgrade-v3_3to3_4.md +15 -0
  78. data/docs/_reference/ufo-upgrade-v3to4.md +27 -0
  79. data/docs/_reference/ufo-upgrade.md +28 -0
  80. data/docs/_reference/ufo-version.md +1 -1
  81. data/docs/articles.md +2 -2
  82. data/docs/docs.md +1 -1
  83. data/docs/img/docs/cloudformation-resources.png +0 -0
  84. data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
  85. data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
  86. data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
  87. data/docs/quick-start.md +21 -9
  88. data/docs/reference.md +10 -2
  89. data/exe/ufo +1 -1
  90. data/lib/cfn/stack.yml +259 -0
  91. data/lib/template/.ufo/params.yml.tt +21 -60
  92. data/lib/template/.ufo/settings.yml.tt +6 -1
  93. data/lib/template/.ufo/settings/cfn/default.yml.tt +55 -0
  94. data/lib/template/.ufo/settings/network/default.yml.tt +18 -0
  95. data/lib/template/.ufo/task_definitions.rb.tt +7 -6
  96. data/lib/template/.ufo/templates/fargate.json.erb +1 -1
  97. data/lib/template/.ufo/templates/main.json.erb +1 -0
  98. data/lib/template/.ufo/variables/base.rb.tt +5 -2
  99. data/lib/template/Dockerfile +10 -15
  100. data/lib/template/bin/deploy.tt +2 -2
  101. data/lib/ufo.rb +29 -20
  102. data/lib/ufo/apps.rb +49 -0
  103. data/lib/ufo/apps/cfn_map.rb +70 -0
  104. data/lib/ufo/apps/service.rb +56 -0
  105. data/lib/ufo/aws_service.rb +15 -6
  106. data/lib/ufo/base.rb +32 -0
  107. data/lib/ufo/cancel.rb +23 -0
  108. data/lib/ufo/cli.rb +91 -27
  109. data/lib/ufo/core.rb +35 -3
  110. data/lib/ufo/current.rb +104 -0
  111. data/lib/ufo/destroy.rb +10 -41
  112. data/lib/ufo/docker/builder.rb +5 -4
  113. data/lib/ufo/docker/cleaner.rb +1 -1
  114. data/lib/ufo/docker/pusher.rb +2 -2
  115. data/lib/ufo/ecr/cleaner.rb +1 -1
  116. data/lib/ufo/help/apps.md +12 -0
  117. data/lib/ufo/help/balancer.md +3 -0
  118. data/lib/ufo/help/current.md +65 -0
  119. data/lib/ufo/help/deploy.md +4 -4
  120. data/lib/ufo/help/destroy.md +3 -3
  121. data/lib/ufo/help/docker.md +3 -1
  122. data/lib/ufo/help/docker/base.md +7 -7
  123. data/lib/ufo/help/docker/build.md +9 -9
  124. data/lib/ufo/help/docker/clean.md +8 -8
  125. data/lib/ufo/help/docker/name.md +4 -4
  126. data/lib/ufo/help/help.md +5 -0
  127. data/lib/ufo/help/init.md +24 -16
  128. data/lib/ufo/help/network/init.md +13 -0
  129. data/lib/ufo/help/ps.md +27 -0
  130. data/lib/ufo/help/releases.md +16 -0
  131. data/lib/ufo/help/resources.md +20 -0
  132. data/lib/ufo/help/rollback.md +35 -0
  133. data/lib/ufo/help/scale.md +22 -2
  134. data/lib/ufo/help/ship.md +40 -14
  135. data/lib/ufo/help/ships.md +4 -13
  136. data/lib/ufo/help/stop.md +7 -0
  137. data/lib/ufo/help/task.md +9 -9
  138. data/lib/ufo/help/tasks/build.md +10 -10
  139. data/lib/ufo/help/tasks/register.md +3 -3
  140. data/lib/ufo/help/upgrade/v3to4.md +3 -0
  141. data/lib/ufo/info.rb +62 -0
  142. data/lib/ufo/init.rb +36 -23
  143. data/lib/ufo/log_group.rb +2 -1
  144. data/lib/ufo/network.rb +24 -0
  145. data/lib/ufo/network/fetch.rb +41 -0
  146. data/lib/ufo/network/helper.rb +23 -0
  147. data/lib/ufo/network/init.rb +26 -0
  148. data/lib/ufo/param.rb +5 -5
  149. data/lib/ufo/ps.rb +102 -0
  150. data/lib/ufo/ps/task.rb +78 -0
  151. data/lib/ufo/releases.rb +14 -0
  152. data/lib/ufo/rollback.rb +53 -0
  153. data/lib/ufo/scale.rb +6 -12
  154. data/lib/ufo/sequence.rb +7 -0
  155. data/lib/ufo/setting.rb +7 -6
  156. data/lib/ufo/setting/profile.rb +24 -0
  157. data/lib/ufo/ship.rb +35 -326
  158. data/lib/ufo/stack.rb +203 -0
  159. data/lib/ufo/stack/context.rb +242 -0
  160. data/lib/ufo/stack/helper.rb +28 -0
  161. data/lib/ufo/stack/status.rb +195 -0
  162. data/lib/ufo/stop.rb +47 -0
  163. data/lib/ufo/task.rb +96 -15
  164. data/lib/ufo/tasks/register.rb +1 -1
  165. data/lib/ufo/template_scope.rb +81 -7
  166. data/lib/ufo/upgrade.rb +32 -0
  167. data/lib/ufo/{upgrade3.rb → upgrade/upgrade3.rb} +1 -1
  168. data/lib/ufo/{upgrade33_to_34.rb → upgrade/upgrade33to34.rb} +2 -2
  169. data/lib/ufo/upgrade/upgrade4.rb +161 -0
  170. data/lib/ufo/util.rb +19 -6
  171. data/lib/ufo/version.rb +1 -1
  172. data/spec/fixtures/apps/describe_services.json +96 -0
  173. data/spec/fixtures/cfn/stack-events-complete.json +1080 -0
  174. data/spec/fixtures/cfn/stack-events-in-progress.json +1080 -0
  175. data/spec/fixtures/cfn/stack-events-update-rollback-complete.json +1086 -0
  176. data/spec/fixtures/deployments.json +50 -0
  177. data/spec/fixtures/ps/describe_tasks.json +58 -0
  178. data/spec/fixtures/settings.yml +2 -0
  179. data/spec/lib/apps_spec.rb +20 -0
  180. data/spec/lib/cli_spec.rb +4 -4
  181. data/spec/lib/ps_spec.rb +14 -0
  182. data/spec/lib/setting_spec.rb +2 -1
  183. data/spec/lib/ship_spec.rb +6 -30
  184. data/spec/lib/stack/status_spec.rb +76 -0
  185. data/spec/lib/stop_spec.rb +13 -0
  186. data/spec/lib/task_spec.rb +5 -2
  187. data/spec/spec_helper.rb +1 -1
  188. data/ufo.gemspec +2 -0
  189. metadata +120 -6
  190. data/docs/_reference/ufo-upgrade3.md +0 -23
  191. data/docs/_reference/ufo-upgrade3_3_to_3_4.md +0 -23
@@ -2,36 +2,37 @@
2
2
  title: Setup Ufo
3
3
  ---
4
4
 
5
- The easiest way to create this ufo folder is by using the `ufo init` command. For this tutorial we'll [tongueroo/hi](https://github.com/tongueroo/hi) which is a small test sinatra app.
5
+ 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.
6
6
  Let's run the command in our newly cloned project.
7
7
 
8
8
  ```sh
9
- git clone https://github.com/tongueroo/hi.git
10
- cd hi
11
- ufo init --app=hi --image=tongueroo/hi
9
+ git clone https://github.com/tongueroo/demo-ufo.git
10
+ cd demo-ufo
11
+ ufo init --app=demo --image=tongueroo/demo-ufo
12
12
  ```
13
13
 
14
14
  You should see output similiar to this:
15
15
 
16
16
  ```sh
17
- $ ufo init --app=hi --image=tongueroo/hi
17
+ $ ufo init --app=demo --image=tongueroo/demo-ufo
18
18
  Setting up ufo project...
19
19
  create .env
20
+ create .ufo/params.yml
20
21
  create .ufo/settings.yml
22
+ create .ufo/settings/cfn/default.yml
23
+ create .ufo/settings/network/default.yml
21
24
  create .ufo/task_definitions.rb
25
+ create .ufo/templates/fargate.json.erb
22
26
  create .ufo/templates/main.json.erb
23
27
  create .ufo/variables/base.rb
24
28
  create .ufo/variables/development.rb
25
29
  create .ufo/variables/production.rb
26
- create Dockerfile
30
+ identical Dockerfile
27
31
  create bin/deploy
28
32
  append .gitignore
33
+ create .dockerignore
29
34
  Starter ufo files created.
30
- $ ufo ship hi-web
31
- Building docker image with:
32
- docker build -t tongueroo/hi:ufo-2017-09-10T15-00-19-c781aaf -f Dockerfile .
33
- ....
34
- Software shipped!
35
+ Congrats 🎉 You have successfully set up ufo for your project.
35
36
  $
36
37
  ```
37
38
 
@@ -59,10 +60,13 @@ Take a look at the `settings.yml` file and notice that it contains some default
59
60
  ```yaml
60
61
  # More info: http://ufoships.com/docs/settings/
61
62
  base:
62
- image: tongueroo/hi
63
+ image: tongueroo/demo-ufo
63
64
  # clean_keep: 30 # cleans up docker images on your docker server.
64
65
  # ecr_keep: 30 # cleans up images on ECR and keeps this remaining amount. Defaults to keep all.
65
66
  # defaults when an new ECS service is created by ufo ship
67
+ network_profile: default # .ufo/settings/network/default.yml file
68
+ cfn_profile: default # .ufo/settings/cfn/default.yml file
69
+
66
70
  development:
67
71
  # cluster: dev # uncomment if you want the cluster name be other than the default
68
72
  # the default is to match UFO_ENV. So UFO_ENV=development means the ECS
@@ -7,91 +7,87 @@ title: Deploy One App
7
7
  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.
8
8
 
9
9
  ```sh
10
- ufo ship hi-web
10
+ ufo ship demo-web
11
11
  ```
12
12
 
13
13
  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:
14
14
 
15
15
  ```sh
16
- ufo ship hi-web --cluster production
17
- UFO_ENV=production ufo ship hi-web --cluster prod
16
+ ufo ship demo-web --cluster development
17
+ UFO_ENV=development ufo ship demo-web
18
18
  ```
19
19
 
20
- When you run `ufo ship hi-web`:
20
+ When you run `ufo ship demo-web`:
21
21
 
22
22
  1. It builds the docker image.
23
23
  2. Generates a task definition and registers it.
24
24
  3. Updates the ECS service to use it.
25
25
 
26
- If the ECS service hi-web does not yet exist, ufo will create the service for you. Ufo will also automatically create the ECS cluster.
26
+ 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.
27
27
 
28
- NOTE: If you are relying on this tool to create the cluster, you still need to associate ECS Container Instances to the cluster yourself.
28
+ NOTE: Ufo creates the ECS cluster record, but you still need to associate ECS Container Instances to the cluster yourself.
29
29
 
30
- By convention, if the service has a container name web, you'll get prompted to create an ELB and specify a target group ARN. The ELB and target group must already exist. You can bypass the prompt and specify the target group ARN as part of the ship command or with the `--no-target-group-prompt` option. The ELB target group only gets associated with the ECS service if the service is being created for the first time. If the service already exists then the `--target-group` parameter just gets ignored and the ECS task simply gets updated. Example:
31
-
32
-
33
- ```bash
34
- ufo ship hi-web --target-group=arn:aws:elasticloadbalancing:us-east-1:12345689:targetgroup/hi-web/12345
35
- ```
36
-
37
- Let's go back to the original command and take a look at the output:
30
+ 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.
38
31
 
39
32
  ```sh
40
- ufo ship hi-web
41
- ```
42
-
43
- The output should look something like this (some of the output has been removed for conciseness):
44
-
45
- ```sh
46
- $ ufo ship hi-web
33
+ $ ufo ship demo-web
47
34
  Building docker image with:
48
- docker build -t tongueroo/hi:ufo-2017-06-12T06-46-12-a18aa30 -f Dockerfile .
35
+ docker build -t tongueroo/demo-ufo:ufo-2018-06-28T16-41-11-7e0af94 -f Dockerfile .
36
+ ...
37
+ Deploying demo-web...
38
+ Ensuring log group for demo-web task definition exists
39
+ Log group name: ecs/demo-web
40
+ Creating stack development-demo-web...
41
+ Generated template saved at: /tmp/ufo/development-demo-web/stack.yml
42
+ Generated parameters saved at: /tmp/ufo/development-demo-web/parameters.yml
43
+ 04:41:27PM CREATE_IN_PROGRESS AWS::CloudFormation::Stack development-demo-web User Initiated
44
+ 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup
45
+ 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup
46
+ 04:41:31PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup
47
+ 04:41:31PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup ElbSecurityGroup Resource creation Initiated
48
+ 04:41:32PM CREATE_IN_PROGRESS AWS::EC2::SecurityGroup EcsSecurityGroup Resource creation Initiated
49
+ 04:41:32PM CREATE_IN_PROGRESS AWS::ElasticLoadBalancingV2::TargetGroup TargetGroup Resource creation Initiated
49
50
  ...
50
- Pushed tongueroo/hi:ufo-2017-06-12T06-46-12-a18aa30 docker image. Took 9s.
51
- Building Task Definitions...
52
- Generating Task Definitions:
53
- ufo/output/hi-web.json
54
- ufo/output/hi-worker.json
55
- ufo/output/hi-clock.json
56
- Task Definitions built in ufo/output.
57
- hi-web task definition registered.
58
- Shipping hi-web...
59
- hi-web service updated on stag cluster with task hi-web
51
+ 04:44:46PM CREATE_COMPLETE AWS::ECS::Service Ecs
52
+ 04:44:48PM CREATE_COMPLETE AWS::CloudFormation::Stack development-demo-web
53
+ Stack success status: CREATE_COMPLETE
54
+ Time took for stack deployment: 3m 22s.
60
55
  Software shipped!
61
- Cleaning up docker images...
62
- Running: docker rmi tongueroo/hi:ufo-2017-06-11T20-32-16-a18aa30 tongueroo/hi:ufo-2017-06-11T20-27-44-bc80e84 tongueroo/hi:ufo-2017-06-11T20-02-18-bc80e84
56
+ $
63
57
  ```
64
58
 
65
59
  Checking the ECS console you should see something like this:
66
60
 
67
61
  <img src="/img/tutorials/ecs-console-ufo-ship.png" class="doc-photo" />
68
62
 
69
- You have successfully shipped a docker image to ECS! 🍾🥂
63
+ You have successfully deployed a Docker image to ECS! 🍾🥂
70
64
 
71
- ## Skipping Previous Steps Method
65
+ ## Checking ECS Service
72
66
 
73
- You should notice that `ufo ship` re-built the docker image and re-registered the task definitions. The `ufo ship` command is designed to run everything in one simple command, so we do not have to manually call the commands in the previous pages: `ufo build` and `ufo tasks`.
67
+ Another way to check that the ECS service is running is with the `ufo ps` command.
74
68
 
75
- If you would like to skip the first 2 steps, then you can use the [ufo deploy]({% link _reference/ufo-deploy.md %}) instead. The `ufo deploy` command will:
69
+ $ ufo ps demo-web
70
+ => Service: demo-web
71
+ Service name: development-demo-web-Ecs-12DRF2703Z3D2
72
+ Status: ACTIVE
73
+ Running count: 1
74
+ Desired count: 1
75
+ Launch type: EC2
76
+ Task definition: demo-web:82
77
+ Elb: develop-Elb-ZY1VARS3KP14-2141687965.us-east-1.elb.amazonaws.com
78
+ +----------+------+-------------+---------------+---------+-------+
79
+ | Id | Name | Release | Started | Status | Notes |
80
+ +----------+------+-------------+---------------+---------+-------+
81
+ | e4426421 | web | demo-web:82 | 5 minutes ago | RUNNING | |
82
+ +----------+------+-------------+---------------+---------+-------+
76
83
 
77
- 1. register the task definition in `.ufo/output/hi-web.json` unmodified
78
- 2. update the ECS service
84
+ ## Ufo Current Tip
79
85
 
80
- Example:
81
-
82
- ```sh
83
- ufo deploy hi-web
84
- ```
85
-
86
- The output should look something like this:
87
-
88
- ```sh
89
- Shipping hi-web...
90
- hi-web service updated on stag cluster with task hi-web
91
- Software shipped!
92
- ```
86
+ 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:
93
87
 
94
- Normally you run everything together in one `ufo ship` command though. Ufo takes a multiple step process and simplifies it down to a single command!
88
+ ufo current --service demo-web
89
+ ufo ship # now same as ufo ship demo-web
90
+ ufo ps # now same as ufo ps demo-web
95
91
 
96
92
  Congratulations 🎊 You have successfully built a Docker image, register it and deployed it to AWS ECS.
97
93
 
@@ -2,16 +2,16 @@
2
2
  title: Deploy Multiple Apps
3
3
  ---
4
4
 
5
- You might have noticed in 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.
5
+ 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.
6
6
 
7
- These processes 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.
7
+ 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.
8
8
 
9
9
  While we can use the `ufo ship` command to deploy to all 3 service roles individually like so:
10
10
 
11
11
  ```sh
12
- ufo ship hi-web
13
- ufo ship hi-worker
14
- ufo ship hi-clock
12
+ ufo ship demo-web
13
+ ufo ship demo-worker
14
+ ufo ship demo-clock
15
15
  ```
16
16
 
17
17
  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,7 +19,7 @@ This would build a new Docker image for each process. We actually want have the
19
19
  ## ufo ships
20
20
 
21
21
  ```sh
22
- ufo ships hi-web hi-worker hi-clock
22
+ ufo ships demo-web demo-worker demo-clock
23
23
  ```
24
24
 
25
25
  You can check on the ECS console and should see something similar to this:
@@ -29,9 +29,11 @@ You can check on the ECS console and should see something similar to this:
29
29
  You can shorten the command by taking advantage of shell expansion:
30
30
 
31
31
  ```sh
32
- ufo ships hi-{web,worker,clock}
32
+ ufo ships demo-{web,worker,clock}
33
33
  ```
34
34
 
35
+ 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.
36
+
35
37
  <a id="prev" class="btn btn-basic" href="{% link _docs/tutorial-ufo-ship.md %}">Back</a>
36
38
  <a id="next" class="btn btn-primary" href="{% link docs.md %}">Next Step</a>
37
39
  <p class="keyboard-tip">Pro tip: Use the <- and -> arrow keys to move back and forward.</p>
@@ -39,7 +39,7 @@ The instance variable values are specified in `.ufo/task_definitions.rb` via a D
39
39
  **.ufo/task_definitions.rb**:
40
40
 
41
41
  ```
42
- task_definition "hi-web" do
42
+ task_definition "demo-web" do
43
43
  source "main" # will use ufo/templates/main.json.erb
44
44
  variables(
45
45
  family: task_definition_name,
@@ -49,7 +49,7 @@ task_definition "hi-web" do
49
49
  )
50
50
  end
51
51
 
52
- task_definition "hi-worker" do
52
+ task_definition "demo-worker" do
53
53
  source "main" # will use ufo/templates/main.json.erb
54
54
  variables(
55
55
  family: task_definition_name,
@@ -66,7 +66,7 @@ Ufo has a concept of shared variables, covered in [Shared Variables]({% link _do
66
66
  **.ufo/variables/base.rb**:
67
67
 
68
68
  ```ruby
69
- @image = helper.full_image_name # includes the git sha tongueroo/hi:ufo-[sha].
69
+ @image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
70
70
  @cpu = 128
71
71
  @memory_reservation = 256
72
72
  @environment = helper.env_file(".env")
@@ -99,27 +99,28 @@ You should see output similar to below:
99
99
  $ ufo tasks build
100
100
  Building Task Definitions...
101
101
  Generating Task Definitions:
102
- .ufo/output/hi-web.json
103
- .ufo/output/hi-worker.json
104
- .ufo/output/hi-clock.json
102
+ .ufo/output/demo-web.json
103
+ .ufo/output/demo-worker.json
104
+ .ufo/output/demo-clock.json
105
105
  Task Definitions built in .ufo/output
106
106
  $
107
107
  ```
108
108
 
109
- Let's take a look at one of the generated files: `.ufo/output/hi-web.json`.
109
+ Let's take a look at one of the generated files: `.ufo/output/demo-web.json`.
110
110
 
111
111
  ```json
112
112
  {
113
- "family": "hi-web",
113
+ "family": "demo-web",
114
114
  "containerDefinitions": [
115
115
  {
116
116
  "name": "web",
117
- "image": "tongueroo/hi:ufo-2018-02-13T11-33-15-27aa242",
118
- "cpu": 192,
119
- "memoryReservation": 256,
117
+ "image": "tongueroo/demo-ufo:ufo-2018-06-29T23-20-47-20b3a10",
118
+ "cpu": 256,
119
+ "memory": 512,
120
+ "memoryReservation": 512,
120
121
  "portMappings": [
121
122
  {
122
- "containerPort": "3000",
123
+ "containerPort": 4567,
123
124
  "protocol": "tcp"
124
125
  }
125
126
  ],
@@ -137,9 +138,9 @@ Let's take a look at one of the generated files: `.ufo/output/hi-web.json`.
137
138
  "logConfiguration": {
138
139
  "logDriver": "awslogs",
139
140
  "options": {
140
- "awslogs-group": "ecs/hi-web",
141
+ "awslogs-group": "ecs/demo-web",
141
142
  "awslogs-region": "us-east-1",
142
- "awslogs-stream-prefix": "hi"
143
+ "awslogs-stream-prefix": "demo"
143
144
  }
144
145
  },
145
146
  "essential": true
@@ -159,9 +160,17 @@ ufo tasks register
159
160
  You should see something similar to this:
160
161
 
161
162
  ```sh
162
- hi-clock task definition registered.
163
- hi-web task definition registered.
164
- hi-worker task definition registered.
163
+ $ ufo tasks register
164
+ Equivalent aws cli command:
165
+ aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-web.json
166
+ demo-web task definition registered.
167
+ Equivalent aws cli command:
168
+ aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-clock.json
169
+ demo-clock task definition registered.
170
+ Equivalent aws cli command:
171
+ aws ecs register-task-definition --cli-input-json file://.ufo/output/demo-worker.json
172
+ demo-worker task definition registered.
173
+ $
165
174
  ```
166
175
 
167
176
  <a id="prev" class="btn btn-basic" href="{% link _docs/tutorial-ufo-docker-build.md %}">Back</a>
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Ufo Current
3
+ ---
4
+
5
+ ## service
6
+
7
+ There's a handy way to shorten ufo commands by setting the current service. Example:
8
+
9
+ ufo ship demo-web # normal usage
10
+ ufo current --service demo-web
11
+ ufo ship # no longer have to type: demo-web
12
+
13
+ To view the current settings run `ufo current` with no options.
14
+
15
+ $ ufo current
16
+ Current env_extra: 1
17
+ Current service: demo-web
18
+
19
+ Setting the current service helps shorten other commands also:
20
+
21
+ ufo cancel
22
+ ufo deploy
23
+ ufo destroy
24
+ ufo ps
25
+ ufo releases
26
+ ufo resources
27
+ ufo rollback VERSION
28
+ ufo scale COUNT
29
+ ufo ship
30
+
31
+ ## UFO_ENV_EXTRA
32
+
33
+ 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.
34
+
35
+ ufo current --env-extra 1
36
+
37
+ ## services
38
+
39
+ 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:
40
+
41
+ ufo ships demo-web demo-worker demo-clock
42
+
43
+ This can be shorten with with current also.
44
+
45
+ ufo current --services demo-web demo-worker demo-clock
46
+ ufo ships
47
+
48
+ <a id="prev" class="btn btn-basic" href="{% link _docs/ufo-env-extra.md %}">Back</a>
49
+ <a id="next" class="btn btn-primary" href="{% link _docs/load-balancer.md %}">Next Step</a>
50
+ <p class="keyboard-tip">Pro tip: Use the <- and -> arrow keys to move back and forward.</p>
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: UFO_ENV_EXTRA
3
+ ---
4
+
5
+ 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.
6
+
7
+ ufo ship demo-web # creates a demo-web ecs service
8
+ UFO_ENV_EXTRA=2 ufo ship demo-web # creates a demo-web-2 ecs service
9
+
10
+ The `UFO_ENV_EXTRA` can also be set with `ufo current` so you do not have to type it over.
11
+
12
+ ufo current --env-extra 1
13
+
14
+ The precedence:
15
+
16
+ 1. UFO_ENV_EXTRA - takes highest precedence
17
+ 2. `.ufo/current` env-extra setting - takes lower precedence
18
+
19
+ <a id="prev" class="btn btn-basic" href="{% link _docs/ufo-env.md %}">Back</a>
20
+ <a id="next" class="btn btn-primary" href="{% link _docs/ufo-current.md %}">Next Step</a>
21
+ <p class="keyboard-tip">Pro tip: Use the <- and -> arrow keys to move back and forward.</p>
@@ -8,24 +8,17 @@ Ufo's behavior is controlled by the `UFO_ENV` environment variable. For example
8
8
 
9
9
  The `UFO_ENV` can be set in several ways:
10
10
 
11
- 1. At the CLI command invocation - This takes the highest precedence.
12
- 2. Exported as an environment variable to your shell - This takes the second highest precedence.
13
- 3. From the `aws_profiles` setting in your `settings.yml` file - This takes the lowest precedence.
14
-
15
- ## At the CLI Command
16
-
17
- ```sh
18
- ufo ship hi-web --cluster production
19
- ```
11
+ 1. Exported as an environment variable to your shell - This takes the second highest precedence.
12
+ 2. From the `aws_profiles` setting in your `settings.yml` file - This takes the lowest precedence.
20
13
 
21
14
  ## As an environment variable
22
15
 
23
16
  ```sh
24
17
  export UFO_ENV=production
25
- ufo ship hi-web
18
+ ufo ship demo-web
26
19
  ```
27
20
 
28
- Most people will set `UFO_ENV` in their `~/.profile`.
21
+ You can set `UFO_ENV` in your `~/.profile`.
29
22
 
30
23
  ## In .ufo/settings.yml
31
24
 
@@ -51,6 +44,6 @@ AWS_PROFILE=whatever => UFO_ENV=development # since there are no profiles that m
51
44
 
52
45
  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 %}).
53
46
 
54
- <a id="prev" class="btn btn-basic" href="{% link _docs/params.md %}">Back</a>
55
- <a id="next" class="btn btn-primary" href="{% link _docs/variables.md %}">Next Step</a>
47
+ <a id="prev" class="btn btn-basic" href="{% link _docs/fargate.md %}">Back</a>
48
+ <a id="next" class="btn btn-primary" href="{% link _docs/ufo-env-extra.md %}">Next Step</a>
56
49
  <p class="keyboard-tip">Pro tip: Use the <- and -> arrow keys to move back and forward.</p>