ufo 4.4.3 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +6 -0
  4. data/docs/_docs/conventions.md +1 -1
  5. data/docs/_docs/extras/codebuild-iam-role.md +1 -1
  6. data/docs/_docs/extras/dockerfile-erb.md +60 -0
  7. data/docs/_docs/extras/ecs-network-mode.md +1 -1
  8. data/docs/_docs/extras/load-balancer.md +1 -1
  9. data/docs/_docs/extras/minimal-deploy-iam.md +1 -1
  10. data/docs/_docs/extras/redirection-support.md +1 -1
  11. data/docs/_docs/extras/route53-support.md +1 -1
  12. data/docs/_docs/extras/security-groups.md +1 -1
  13. data/docs/_docs/extras/ssl-support.md +1 -1
  14. data/docs/_docs/faq.md +2 -2
  15. data/docs/_docs/helpers.md +1 -1
  16. data/docs/_docs/more/auto-completion.md +11 -15
  17. data/docs/_docs/more/automated-cleanup.md +1 -1
  18. data/docs/_docs/more/customize-cloudformation.md +5 -5
  19. data/docs/_docs/more/migrations.md +5 -11
  20. data/docs/_docs/more/run-in-pieces.md +6 -12
  21. data/docs/_docs/more/single-task.md +9 -14
  22. data/docs/_docs/more/stuck-cloudformation.md +1 -1
  23. data/docs/_docs/more/why-cloudformation.md +1 -1
  24. data/docs/_docs/next-steps.md +1 -1
  25. data/docs/_docs/settings.md +3 -60
  26. data/docs/_docs/settings/aws_profile.md +36 -0
  27. data/docs/_docs/{settings-cfn.md → settings/cfn.md} +2 -0
  28. data/docs/_docs/settings/cluster.md +72 -0
  29. data/docs/_docs/{settings-network.md → settings/network.md} +3 -1
  30. data/docs/_docs/structure.md +1 -1
  31. data/docs/_docs/ufo-current.md +1 -1
  32. data/docs/_docs/ufo-env-extra.md +1 -1
  33. data/docs/_docs/ufo-env.md +1 -1
  34. data/docs/_docs/{params.md → ufo-task-params.md} +13 -6
  35. data/docs/_docs/upgrading.md +1 -1
  36. data/docs/_docs/upgrading/upgrade4.5.md +54 -0
  37. data/docs/_docs/upgrading/upgrade4.md +1 -1
  38. data/docs/_docs/variables.md +1 -1
  39. data/docs/_includes/subnav.html +13 -4
  40. data/docs/_reference/ufo-apps.md +1 -0
  41. data/docs/_reference/ufo-docker-base.md +10 -0
  42. data/docs/_reference/ufo-network-init.md +6 -5
  43. data/docs/_reference/ufo-task.md +10 -0
  44. data/docs/_reference/ufo-upgrade-v43to45.md +15 -0
  45. data/docs/_reference/ufo-upgrade.md +1 -1
  46. data/docs/articles.md +1 -1
  47. data/lib/ufo.rb +3 -37
  48. data/lib/ufo/apps.rb +18 -11
  49. data/lib/ufo/apps/cfn_map.rb +1 -1
  50. data/lib/ufo/apps/cluster.rb +24 -0
  51. data/lib/ufo/autoloader.rb +21 -0
  52. data/lib/ufo/base.rb +3 -3
  53. data/lib/ufo/cli.rb +2 -1
  54. data/lib/ufo/completer.rb +0 -2
  55. data/lib/ufo/docker.rb +0 -5
  56. data/lib/ufo/docker/builder.rb +12 -4
  57. data/lib/ufo/docker/compiler.rb +21 -0
  58. data/lib/ufo/docker/dockerfile.rb +1 -2
  59. data/lib/ufo/docker/variables.rb +26 -0
  60. data/lib/ufo/dsl.rb +0 -4
  61. data/lib/ufo/help/docker/base.md +10 -0
  62. data/lib/ufo/help/task.md +10 -0
  63. data/lib/ufo/network.rb +0 -4
  64. data/lib/ufo/param.rb +1 -16
  65. data/lib/ufo/ps.rb +0 -2
  66. data/lib/ufo/setting.rb +0 -2
  67. data/lib/ufo/ship.rb +2 -3
  68. data/lib/ufo/stack.rb +1 -4
  69. data/lib/ufo/stack/context.rb +4 -4
  70. data/lib/ufo/stack/helper.rb +10 -4
  71. data/lib/ufo/task.rb +2 -1
  72. data/lib/ufo/tasks.rb +0 -3
  73. data/lib/ufo/upgrade.rb +3 -8
  74. data/lib/ufo/upgrade/{upgrade43to44.rb → upgrade43to45.rb} +5 -5
  75. data/lib/ufo/util.rb +5 -2
  76. data/lib/ufo/version.rb +1 -1
  77. data/spec/fixtures/settings.yml +1 -1
  78. data/ufo.gemspec +1 -0
  79. metadata +30 -13
  80. data/Gemfile.lock +0 -113
  81. data/docs/_docs/upgrading/upgrade4.4.md +0 -39
  82. data/docs/_reference/ufo-upgrade-v43to44.md +0 -15
  83. data/lib/ufo/ecr.rb +0 -6
  84. data/lib/ufo/ecs.rb +0 -5
data/lib/ufo/task.rb CHANGED
@@ -8,7 +8,8 @@ module Ufo
8
8
  def initialize(task_definition, options)
9
9
  @task_definition = task_definition
10
10
  @options = options
11
- @cluster = @options[:cluster] || default_cluster
11
+ # Assume task_definition is the same name as the ecs service name
12
+ @cluster = @options[:cluster] || default_cluster(task_definition)
12
13
  end
13
14
 
14
15
  def run
data/lib/ufo/tasks.rb CHANGED
@@ -1,8 +1,5 @@
1
1
  module Ufo
2
2
  class Tasks < Command
3
- autoload :Builder, 'ufo/tasks/builder'
4
- autoload :Register, 'ufo/tasks/register'
5
-
6
3
  desc "build", "Build task definitions."
7
4
  long_desc Help.text("tasks:build")
8
5
  option :pretty, type: :boolean, default: true, desc: "Pretty format the json for the task definitions"
data/lib/ufo/upgrade.rb CHANGED
@@ -1,10 +1,5 @@
1
1
  module Ufo
2
2
  class Upgrade < Command
3
- autoload :Upgrade3, "ufo/upgrade/upgrade3"
4
- autoload :Upgrade33to34, "ufo/upgrade/upgrade33to34"
5
- autoload :Upgrade4, "ufo/upgrade/upgrade4"
6
- autoload :Upgrade43to44, "ufo/upgrade/upgrade43to44"
7
-
8
3
  desc "v2to3", "Upgrade from version 2 to 3."
9
4
  def v2to3
10
5
  Upgrade3.new(options).run
@@ -30,9 +25,9 @@ module Ufo
30
25
  Upgrade4.start
31
26
  end
32
27
 
33
- desc "v43to44", "Upgrade from version 4.3 to 4.4"
34
- def v43to44
35
- Upgrade43to44.new(options).run
28
+ desc "v43to45", "Upgrade from version 4.3 and 4.4 to 4.5"
29
+ def v43to45
30
+ Upgrade43to45.new(options).run
36
31
  end
37
32
  end
38
33
  end
@@ -2,7 +2,7 @@ require 'fileutils'
2
2
  require 'yaml'
3
3
 
4
4
  class Ufo::Upgrade
5
- class Upgrade43to44
5
+ class Upgrade43to45
6
6
  def initialize(options)
7
7
  @options = options
8
8
  end
@@ -10,13 +10,13 @@ class Ufo::Upgrade
10
10
  def run
11
11
  settings_path = ".ufo/settings.yml"
12
12
  settings = YAML.load_file(settings_path)
13
- if settings["base"]["stack_naming"]
14
- puts "Detected stack_naming in the #{settings_path}. Already upgraded to v4.4"
13
+ if settings.dig("base", "stack_naming") == "append_ufo_env"
14
+ puts "Detected stack_naming in the #{settings_path}. Already upgraded to v4.5"
15
15
  return
16
16
  end
17
17
 
18
- puts "Upgrading to ufo v4.4..."
19
- settings["base"]["stack_naming"] = "append_env"
18
+ puts "Upgrading to ufo v4.5..."
19
+ settings["base"]["stack_naming"] = "append_ufo_env"
20
20
  text = YAML.dump(settings)
21
21
  IO.write(settings_path, text)
22
22
  puts "Updated .ufo/settings.yml"
data/lib/ufo/util.rb CHANGED
@@ -6,8 +6,11 @@ module Ufo
6
6
  # But it can be overriden by ufo/settings.yml cluster
7
7
  #
8
8
  # More info: http://ufoships.com/docs/settings/
9
- def default_cluster
10
- settings[:cluster] || Ufo.env
9
+ def default_cluster(service)
10
+ # to_s.to_sym in case service is nil
11
+ settings.dig(:service_cluster, service.to_s.to_sym) ||
12
+ settings[:cluster] ||
13
+ Ufo.env
11
14
  end
12
15
 
13
16
  # Keys are strings for simplicity.
data/lib/ufo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ufo
2
- VERSION = "4.4.3"
2
+ VERSION = "4.5.0"
3
3
  end
@@ -6,7 +6,7 @@ base:
6
6
  # defaults when an new ECS service is created by ufo ship
7
7
  cfn_profile: default
8
8
  network_profile: default
9
- stack_naming: append_env # so spec doesnt pause for 20s
9
+ stack_naming: append_ufo_env # so spec doesnt pause for 20s
10
10
 
11
11
  development:
12
12
  cluster: dev
data/ufo.gemspec CHANGED
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "render_me_pretty"
32
32
  spec.add_dependency "text-table"
33
33
  spec.add_dependency "thor"
34
+ spec.add_dependency "zeitwerk"
34
35
 
35
36
  spec.add_development_dependency "bundler"
36
37
  spec.add_development_dependency "byebug"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ufo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.3
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-04 00:00:00.000000000 Z
11
+ date: 2019-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-cloudformation
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: zeitwerk
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: bundler
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -278,7 +292,6 @@ files:
278
292
  - CHANGELOG.md
279
293
  - CONTRIBUTING.md
280
294
  - Gemfile
281
- - Gemfile.lock
282
295
  - Guardfile
283
296
  - LICENSE.txt
284
297
  - README.md
@@ -293,6 +306,7 @@ files:
293
306
  - docs/_docs/aws-ecs-task-execution-role.md
294
307
  - docs/_docs/conventions.md
295
308
  - docs/_docs/extras/codebuild-iam-role.md
309
+ - docs/_docs/extras/dockerfile-erb.md
296
310
  - docs/_docs/extras/ecs-network-mode.md
297
311
  - docs/_docs/extras/load-balancer.md
298
312
  - docs/_docs/extras/minimal-deploy-iam.md
@@ -313,11 +327,12 @@ files:
313
327
  - docs/_docs/more/stuck-cloudformation.md
314
328
  - docs/_docs/more/why-cloudformation.md
315
329
  - docs/_docs/next-steps.md
316
- - docs/_docs/params.md
317
330
  - docs/_docs/quick-start-ec2.md
318
- - docs/_docs/settings-cfn.md
319
- - docs/_docs/settings-network.md
320
331
  - docs/_docs/settings.md
332
+ - docs/_docs/settings/aws_profile.md
333
+ - docs/_docs/settings/cfn.md
334
+ - docs/_docs/settings/cluster.md
335
+ - docs/_docs/settings/network.md
321
336
  - docs/_docs/structure.md
322
337
  - docs/_docs/tutorial-ufo-docker-build.md
323
338
  - docs/_docs/tutorial-ufo-init.md
@@ -328,9 +343,10 @@ files:
328
343
  - docs/_docs/ufo-current.md
329
344
  - docs/_docs/ufo-env-extra.md
330
345
  - docs/_docs/ufo-env.md
346
+ - docs/_docs/ufo-task-params.md
331
347
  - docs/_docs/ufo-tasks-register.md
332
348
  - docs/_docs/upgrading.md
333
- - docs/_docs/upgrading/upgrade4.4.md
349
+ - docs/_docs/upgrading/upgrade4.5.md
334
350
  - docs/_docs/upgrading/upgrade4.md
335
351
  - docs/_docs/variables.md
336
352
  - docs/_includes/about.html
@@ -403,7 +419,7 @@ files:
403
419
  - docs/_reference/ufo-upgrade-v2to3.md
404
420
  - docs/_reference/ufo-upgrade-v33to34.md
405
421
  - docs/_reference/ufo-upgrade-v3to4.md
406
- - docs/_reference/ufo-upgrade-v43to44.md
422
+ - docs/_reference/ufo-upgrade-v43to45.md
407
423
  - docs/_reference/ufo-upgrade.md
408
424
  - docs/_reference/ufo-version.md
409
425
  - docs/articles.md
@@ -460,7 +476,9 @@ files:
460
476
  - lib/ufo.rb
461
477
  - lib/ufo/apps.rb
462
478
  - lib/ufo/apps/cfn_map.rb
479
+ - lib/ufo/apps/cluster.rb
463
480
  - lib/ufo/apps/service.rb
481
+ - lib/ufo/autoloader.rb
464
482
  - lib/ufo/aws_service.rb
465
483
  - lib/ufo/base.rb
466
484
  - lib/ufo/cancel.rb
@@ -477,16 +495,16 @@ files:
477
495
  - lib/ufo/docker.rb
478
496
  - lib/ufo/docker/builder.rb
479
497
  - lib/ufo/docker/cleaner.rb
498
+ - lib/ufo/docker/compiler.rb
480
499
  - lib/ufo/docker/dockerfile.rb
481
500
  - lib/ufo/docker/pusher.rb
501
+ - lib/ufo/docker/variables.rb
482
502
  - lib/ufo/dsl.rb
483
503
  - lib/ufo/dsl/helper.rb
484
504
  - lib/ufo/dsl/outputter.rb
485
505
  - lib/ufo/dsl/task_definition.rb
486
- - lib/ufo/ecr.rb
487
506
  - lib/ufo/ecr/auth.rb
488
507
  - lib/ufo/ecr/cleaner.rb
489
- - lib/ufo/ecs.rb
490
508
  - lib/ufo/ecs/service.rb
491
509
  - lib/ufo/help.rb
492
510
  - lib/ufo/help/apps.md
@@ -553,7 +571,7 @@ files:
553
571
  - lib/ufo/upgrade/upgrade3.rb
554
572
  - lib/ufo/upgrade/upgrade33to34.rb
555
573
  - lib/ufo/upgrade/upgrade4.rb
556
- - lib/ufo/upgrade/upgrade43to44.rb
574
+ - lib/ufo/upgrade/upgrade43to45.rb
557
575
  - lib/ufo/util.rb
558
576
  - lib/ufo/version.rb
559
577
  - spec/fixtures/apps/describe_services.json
@@ -601,8 +619,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
601
619
  - !ruby/object:Gem::Version
602
620
  version: '0'
603
621
  requirements: []
604
- rubyforge_project:
605
- rubygems_version: 2.5.2
622
+ rubygems_version: 3.0.3
606
623
  signing_key:
607
624
  specification_version: 4
608
625
  summary: AWS ECS Deploy Tool
data/Gemfile.lock DELETED
@@ -1,113 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ufo (4.4.2)
5
- aws-sdk-cloudformation
6
- aws-sdk-cloudwatchlogs
7
- aws-sdk-ec2
8
- aws-sdk-ecr
9
- aws-sdk-ecs
10
- aws-sdk-elasticloadbalancingv2
11
- deep_merge
12
- memoist
13
- plissken
14
- rainbow
15
- render_me_pretty
16
- text-table
17
- thor
18
-
19
- GEM
20
- remote: https://rubygems.org/
21
- specs:
22
- activesupport (5.2.3)
23
- concurrent-ruby (~> 1.0, >= 1.0.2)
24
- i18n (>= 0.7, < 2)
25
- minitest (~> 5.1)
26
- tzinfo (~> 1.1)
27
- aws-eventstream (1.0.3)
28
- aws-partitions (1.171.0)
29
- aws-sdk-cloudformation (1.22.0)
30
- aws-sdk-core (~> 3, >= 3.53.0)
31
- aws-sigv4 (~> 1.1)
32
- aws-sdk-cloudwatchlogs (1.20.0)
33
- aws-sdk-core (~> 3, >= 3.53.0)
34
- aws-sigv4 (~> 1.1)
35
- aws-sdk-core (3.54.2)
36
- aws-eventstream (~> 1.0, >= 1.0.2)
37
- aws-partitions (~> 1.0)
38
- aws-sigv4 (~> 1.1)
39
- jmespath (~> 1.0)
40
- aws-sdk-ec2 (1.89.0)
41
- aws-sdk-core (~> 3, >= 3.53.0)
42
- aws-sigv4 (~> 1.1)
43
- aws-sdk-ecr (1.17.0)
44
- aws-sdk-core (~> 3, >= 3.53.0)
45
- aws-sigv4 (~> 1.1)
46
- aws-sdk-ecs (1.40.0)
47
- aws-sdk-core (~> 3, >= 3.53.0)
48
- aws-sigv4 (~> 1.1)
49
- aws-sdk-elasticloadbalancingv2 (1.29.0)
50
- aws-sdk-core (~> 3, >= 3.53.0)
51
- aws-sigv4 (~> 1.1)
52
- aws-sigv4 (1.1.0)
53
- aws-eventstream (~> 1.0, >= 1.0.2)
54
- byebug (11.0.1)
55
- cli_markdown (0.1.0)
56
- codeclimate-test-reporter (1.0.9)
57
- simplecov (<= 0.13)
58
- concurrent-ruby (1.1.5)
59
- deep_merge (1.2.1)
60
- diff-lcs (1.3)
61
- docile (1.1.5)
62
- i18n (1.6.0)
63
- concurrent-ruby (~> 1.0)
64
- jmespath (1.4.0)
65
- json (2.2.0)
66
- memoist (0.16.0)
67
- minitest (5.11.3)
68
- plissken (1.3.0)
69
- rainbow (3.0.0)
70
- rake (12.3.2)
71
- render_me_pretty (0.8.2)
72
- activesupport
73
- rainbow
74
- tilt
75
- rspec (3.8.0)
76
- rspec-core (~> 3.8.0)
77
- rspec-expectations (~> 3.8.0)
78
- rspec-mocks (~> 3.8.0)
79
- rspec-core (3.8.0)
80
- rspec-support (~> 3.8.0)
81
- rspec-expectations (3.8.3)
82
- diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.8.0)
84
- rspec-mocks (3.8.0)
85
- diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.8.0)
87
- rspec-support (3.8.0)
88
- simplecov (0.13.0)
89
- docile (~> 1.1.0)
90
- json (>= 1.8, < 3)
91
- simplecov-html (~> 0.10.0)
92
- simplecov-html (0.10.2)
93
- text-table (1.2.4)
94
- thor (0.20.3)
95
- thread_safe (0.3.6)
96
- tilt (2.0.9)
97
- tzinfo (1.2.5)
98
- thread_safe (~> 0.1)
99
-
100
- PLATFORMS
101
- ruby
102
-
103
- DEPENDENCIES
104
- bundler
105
- byebug
106
- cli_markdown
107
- codeclimate-test-reporter
108
- rake
109
- rspec
110
- ufo!
111
-
112
- BUNDLED WITH
113
- 2.0.1
@@ -1,39 +0,0 @@
1
- ---
2
- title: Upgrading to Version 4.4
3
- short_title: Version 4.4
4
- order: 1
5
- categories: upgrading
6
- nav_order: 31
7
- ---
8
-
9
- In ufo version 4.4, the environment name gets appends to the end of the CloudFormation stack name. Previous versions prepended the environment name to the stack name. This means a new stack gets created if you're going from version 4.3 to 4.4. For example:
10
-
11
- Version | Stack Name
12
- --- | ---
13
- 4.3 and below | development-demo-web
14
- 4.4 and above | demo-web-development
15
-
16
- You must upgrade to using the new stack and delete the old stack manually. You can delete the old stack with the CloudFormation console by selecting the old stack, clicking Actions, and *Delete Stack*.
17
-
18
- ## Upgrading Instructions
19
-
20
- To upgrade from version 4.3 to 4.4 you can run:
21
-
22
- ufo upgrade v43to44
23
-
24
- This updates your `.ufo/settings.yml` file to include `stack_naming: append_env` which removes a warning message and 20 second delay when you deploy. Example:
25
-
26
- .ufo/settings.yml:
27
-
28
- ```yaml
29
- base:
30
- stack_naming: append_env
31
- ```
32
-
33
- If you would still like to keep the old behavior, you can use `stack_naming: prepend_env` for now. However, support for prepend_env will be removed in future versions.
34
-
35
- ## Reasoning
36
-
37
- CloudFormation names the resources it creates with the beginning portion of the stack name. When the stack name prepends the environment then resources like ELBs a little bit harder to identify since they might be named something like this `product-Elb-K0LFFQ9LK50W`. It makes it harder to distinguish ELBs from different apps created by ufo.
38
-
39
- {% include prev_next.md %}
@@ -1,15 +0,0 @@
1
- ---
2
- title: ufo upgrade v43to44
3
- reference: true
4
- ---
5
-
6
- ## Usage
7
-
8
- ufo upgrade v43to44
9
-
10
- ## Description
11
-
12
- Upgrade from version 4.3 to 4.4
13
-
14
-
15
-
data/lib/ufo/ecr.rb DELETED
@@ -1,6 +0,0 @@
1
- module Ufo
2
- module Ecr
3
- autoload :Auth, 'ufo/ecr/auth'
4
- autoload :Cleaner, 'ufo/ecr/cleaner'
5
- end
6
- end
data/lib/ufo/ecs.rb DELETED
@@ -1,5 +0,0 @@
1
- module Ufo
2
- module ECS
3
- autoload :Service, 'ufo/ecs/service'
4
- end
5
- end