ufo 1.7.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/docs/_docs/conventions.md +4 -0
- data/docs/_docs/helpers.md +1 -1
- data/docs/_docs/install.md +11 -11
- data/docs/_docs/settings.md +64 -23
- data/docs/_docs/structure.md +7 -2
- data/docs/_docs/tutorial-ufo-init.md +22 -16
- data/docs/_docs/tutorial-ufo-ship.md +19 -18
- data/docs/_docs/tutorial-ufo-ships.md +5 -5
- data/docs/_docs/tutorial-ufo-tasks-build.md +50 -63
- data/docs/_docs/ufo-destroy.md +2 -2
- data/docs/_docs/ufo-env.md +54 -0
- data/docs/_docs/ufo-init.md +7 -3
- data/docs/_docs/ufo-scale.md +2 -2
- data/docs/_docs/ufo-ship.md +8 -8
- data/docs/_docs/ufo-ships.md +4 -4
- data/docs/_docs/ufo-tasks-build.md +42 -26
- data/docs/_docs/ufo-tasks-register.md +3 -3
- data/docs/_docs/variables.md +48 -0
- data/docs/_includes/commands.html +1 -0
- data/docs/_includes/subnav.html +2 -0
- data/docs/bin/web +4 -0
- data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
- data/docs/quick-start.md +22 -4
- data/lib/starter_project/bin/deploy +1 -1
- data/lib/starter_project/ufo/settings.yml +14 -6
- data/lib/starter_project/ufo/task_definitions.rb +13 -24
- data/lib/starter_project/ufo/variables/base.rb +6 -0
- data/lib/starter_project/ufo/variables/prod.rb +7 -0
- data/lib/starter_project/ufo/variables/stag.rb +7 -0
- data/lib/ufo.rb +3 -0
- data/lib/ufo/default/settings.yml +25 -0
- data/lib/ufo/defaults.rb +11 -10
- data/lib/ufo/dsl/task_definition.rb +31 -0
- data/lib/ufo/env.rb +18 -0
- data/lib/ufo/settings.rb +18 -12
- data/lib/ufo/version.rb +1 -1
- metadata +10 -4
- data/docs/img/tutorials/ufo-init.png +0 -0
- data/docs/img/tutorials/ufo-tasks-build.png +0 -0
@@ -5,45 +5,34 @@
|
|
5
5
|
# * helper.full_image_name - Docker image name with the tag when docker image is built by ufo. This is defined in ufo/settings.yml. The helper.full_image_name includes the git sha tongueroo/hi:ufo-[sha].
|
6
6
|
# * helper.dockerfile_port - Expose port in the Dockerfile. Only supports one exposed port, the first one that is encountered.
|
7
7
|
#
|
8
|
-
# env_vars - is a helper method that generates the proper environment Array of Hashes
|
9
|
-
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
cpu: 128,
|
14
|
-
memory_reservation: 256,
|
15
|
-
environment: helper.env_file(".env")
|
16
|
-
# another example
|
17
|
-
# environment: helper.env_vars(%Q{
|
18
|
-
# RAILS_ENV=production
|
19
|
-
# SECRET_KEY_BASE=secret
|
20
|
-
# })
|
21
|
-
}
|
22
|
-
|
23
|
-
task_definition "<%= @app %>-web-<%= @env %>" do
|
8
|
+
# helper.env_vars - is a helper method that generates the proper environment Array of Hashes
|
9
|
+
#
|
10
|
+
# More info: http://ufoships.com/docs/helpers/
|
11
|
+
#
|
12
|
+
task_definition "<%= @app %>-web" do
|
24
13
|
source "main" # will use ufo/templates/main.json.erb
|
25
|
-
variables(
|
14
|
+
variables(
|
26
15
|
family: task_definition_name,
|
27
16
|
name: "web",
|
28
17
|
container_port: helper.dockerfile_port,
|
29
18
|
command: ["bin/web"]
|
30
|
-
)
|
19
|
+
)
|
31
20
|
end
|
32
21
|
|
33
|
-
task_definition "<%= @app %>-worker
|
22
|
+
task_definition "<%= @app %>-worker" do
|
34
23
|
source "main" # will use ufo/templates/main.json.erb
|
35
|
-
variables(
|
24
|
+
variables(
|
36
25
|
family: task_definition_name,
|
37
26
|
name: "worker",
|
38
27
|
command: ["bin/worker"]
|
39
|
-
)
|
28
|
+
)
|
40
29
|
end
|
41
30
|
|
42
|
-
task_definition "<%= @app %>-clock
|
31
|
+
task_definition "<%= @app %>-clock" do
|
43
32
|
source "main" # will use ufo/templates/main.json.erb
|
44
|
-
variables(
|
33
|
+
variables(
|
45
34
|
family: task_definition_name,
|
46
35
|
name: "clock",
|
47
36
|
command: ["bin/clock"]
|
48
|
-
)
|
37
|
+
)
|
49
38
|
end
|
data/lib/ufo.rb
CHANGED
@@ -5,6 +5,7 @@ require 'colorize'
|
|
5
5
|
require 'fileutils'
|
6
6
|
|
7
7
|
module Ufo
|
8
|
+
autoload :Env, 'ufo/env'
|
8
9
|
autoload :Defaults, 'ufo/defaults'
|
9
10
|
autoload :AwsServices, 'ufo/aws_services'
|
10
11
|
autoload :Command, 'ufo/command'
|
@@ -23,3 +24,5 @@ module Ufo
|
|
23
24
|
autoload :Ecr, 'ufo/ecr'
|
24
25
|
autoload :Tasks, 'ufo/tasks'
|
25
26
|
end
|
27
|
+
|
28
|
+
Ufo::Env.setup!
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# More info: http://ufoships.com/docs/ufo-settings/
|
2
|
+
#
|
3
|
+
# image:
|
4
|
+
# clean_keep: 30
|
5
|
+
# ecr_keep: 30
|
6
|
+
|
7
|
+
# aws_profile_ufo_env_map:
|
8
|
+
# default: prod
|
9
|
+
# # More examples:
|
10
|
+
# aws_profile1: prod
|
11
|
+
# aws_profile2: stag
|
12
|
+
# aws_profile3: dev
|
13
|
+
|
14
|
+
# ufo_env_cluster_map:
|
15
|
+
# default: prod
|
16
|
+
# # More examples:
|
17
|
+
# aws_profile1: prod
|
18
|
+
# aws_profile2: stag
|
19
|
+
# aws_profile3: dev
|
20
|
+
|
21
|
+
# defaults when an new ECS service is created by ufo ship
|
22
|
+
new_service:
|
23
|
+
maximum_percent: 200
|
24
|
+
minimum_healthy_percent: 100
|
25
|
+
desired_count: 1
|
data/lib/ufo/defaults.rb
CHANGED
@@ -8,18 +8,19 @@ module Ufo
|
|
8
8
|
#
|
9
9
|
# So @options must be set
|
10
10
|
module Defaults
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# service_cluster:
|
14
|
-
# default: prod-lo
|
15
|
-
# hi-web-prod: prod-hi
|
16
|
-
# hi-clock-prod: prod-lo
|
17
|
-
# hi-worker-prod: prod-lo
|
11
|
+
# The default cluster normally defaults to the UFO_ENV value.
|
12
|
+
# But it can be overriden by ufo/settings.yml ufo_env_cluster_map
|
18
13
|
#
|
19
|
-
#
|
14
|
+
# Covered: http://localhost:4000/docs/settings/
|
20
15
|
def default_cluster
|
21
|
-
|
22
|
-
|
16
|
+
#
|
17
|
+
|
18
|
+
map = settings.data["ufo_env_cluster_map"]
|
19
|
+
if map
|
20
|
+
ecs_cluster = map[UFO_ENV] || map["default"]
|
21
|
+
end
|
22
|
+
|
23
|
+
ecs_cluster || UFO_ENV
|
23
24
|
end
|
24
25
|
|
25
26
|
# These default service values only are used when a service is created by `ufo`
|
@@ -19,10 +19,41 @@ module Ufo
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def build
|
22
|
+
load_variables
|
22
23
|
instance_eval(&@block)
|
23
24
|
erb_result(source_path)
|
24
25
|
end
|
25
26
|
|
27
|
+
def load_variables
|
28
|
+
load_variables_file("base")
|
29
|
+
load_variables_file(UFO_ENV)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Load the variables defined in ufo/variables/* to make available in the
|
33
|
+
# template blocks in ufo/templates/*.
|
34
|
+
#
|
35
|
+
# Example:
|
36
|
+
#
|
37
|
+
# `ufo/variables/base.rb`:
|
38
|
+
# @name = "docker-process-name"
|
39
|
+
# @image = "docker-image-name"
|
40
|
+
#
|
41
|
+
# `ufo/templates/main.json.erb`:
|
42
|
+
# {
|
43
|
+
# "containerDefinitions": [
|
44
|
+
# {
|
45
|
+
# "name": "<%= @name %>",
|
46
|
+
# "image": "<%= @image %>",
|
47
|
+
# ....
|
48
|
+
# }
|
49
|
+
#
|
50
|
+
# NOTE: Only able to make instance variables avaialble with instance_eval
|
51
|
+
# Wasnt able to make local variables available.
|
52
|
+
def load_variables_file(filename)
|
53
|
+
path = "#{@project_root}/ufo/variables/#{filename}.rb"
|
54
|
+
instance_eval(IO.read(path)) if File.exist?(path)
|
55
|
+
end
|
56
|
+
|
26
57
|
def erb_result(path)
|
27
58
|
template = IO.read(path)
|
28
59
|
begin
|
data/lib/ufo/env.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
class Ufo::Env
|
2
|
+
def self.setup!(project_root='.')
|
3
|
+
# Ensures that UFO_ENV is always set to a default value.
|
4
|
+
# For Ufo::Env.setup! we do not need to check if we're in a ufo project
|
5
|
+
# Because we could not be at first. For example when: ufo init is first called.
|
6
|
+
# Other uses of Ufo::Settings assumes that we should be in a ufo project.
|
7
|
+
settings = Ufo::Settings.new(project_root, false).data
|
8
|
+
map = settings['aws_profile_ufo_env_map']
|
9
|
+
|
10
|
+
if map
|
11
|
+
ufo_env = map[ENV['AWS_PROFILE']] || map['default']
|
12
|
+
end
|
13
|
+
ufo_env ||= 'prod' # defaults to prod
|
14
|
+
ufo_env = ENV['UFO_ENV'] if ENV['UFO_ENV'] # highest precedence
|
15
|
+
|
16
|
+
Kernel.const_set(:UFO_ENV, ufo_env)
|
17
|
+
end
|
18
|
+
end
|
data/lib/ufo/settings.rb
CHANGED
@@ -2,31 +2,37 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
module Ufo
|
4
4
|
class Settings
|
5
|
-
def initialize(project_root='.')
|
5
|
+
def initialize(project_root='.', check_ufo_project=true)
|
6
6
|
@project_root = project_root
|
7
|
+
@check_ufo_project = check_ufo_project
|
7
8
|
end
|
8
9
|
|
9
10
|
# data contains the settings.yml config. The order or precedence for settings
|
10
11
|
# is the project ufo/settings.yml and then the ~/.ufo/settings.yml.
|
11
12
|
def data
|
12
|
-
return @
|
13
|
+
return @settings_yaml if @settings_yaml
|
13
14
|
|
14
|
-
if File.exist?(
|
15
|
-
|
16
|
-
@data = user_settings.merge(@data)
|
17
|
-
else
|
18
|
-
puts "ERROR: No settings file at #{settings_path}. Are you sure you are in a project with ufo setup?"
|
15
|
+
if @check_ufo_project && !File.exist?(project_settings_path)
|
16
|
+
puts "ERROR: No settings file at #{project_settings_path}. Are you sure you are in a project with ufo setup?"
|
19
17
|
puts "Please create a settings file via: ufo init"
|
20
18
|
exit 1
|
21
19
|
end
|
22
|
-
end
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
project = File.exist?(project_settings_path) ?
|
22
|
+
YAML.load_file(project_settings_path) :
|
23
|
+
{}
|
24
|
+
|
25
|
+
user_file = "#{ENV['HOME']}/.ufo/settings.yml"
|
26
|
+
user = File.exist?(user_file) ? YAML.load_file(user_file) : {}
|
27
|
+
|
28
|
+
default_file = File.expand_path("../default/settings.yml", __FILE__)
|
29
|
+
default = YAML.load_file(default_file)
|
30
|
+
|
31
|
+
@settings_yaml = default.merge(user.merge(project))
|
27
32
|
end
|
28
33
|
|
29
|
-
|
34
|
+
private
|
35
|
+
def project_settings_path
|
30
36
|
"#{@project_root}/ufo/settings.yml"
|
31
37
|
end
|
32
38
|
end
|
data/lib/ufo/version.rb
CHANGED
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
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- docs/_docs/ufo-docker-build.md
|
198
198
|
- docs/_docs/ufo-docker-clean.md
|
199
199
|
- docs/_docs/ufo-docker-name.md
|
200
|
+
- docs/_docs/ufo-env.md
|
200
201
|
- docs/_docs/ufo-help.md
|
201
202
|
- docs/_docs/ufo-init.md
|
202
203
|
- docs/_docs/ufo-scale.md
|
@@ -204,6 +205,7 @@ files:
|
|
204
205
|
- docs/_docs/ufo-ships.md
|
205
206
|
- docs/_docs/ufo-tasks-build.md
|
206
207
|
- docs/_docs/ufo-tasks-register.md
|
208
|
+
- docs/_docs/variables.md
|
207
209
|
- docs/_includes/about.html
|
208
210
|
- docs/_includes/commands.html
|
209
211
|
- docs/_includes/contact.html
|
@@ -234,6 +236,7 @@ files:
|
|
234
236
|
- docs/_layouts/default.html
|
235
237
|
- docs/_layouts/style.css
|
236
238
|
- docs/articles.md
|
239
|
+
- docs/bin/web
|
237
240
|
- docs/css/font-awesome/css/font-awesome.css
|
238
241
|
- docs/css/font-awesome/css/font-awesome.min.css
|
239
242
|
- docs/css/font-awesome/fonts/FontAwesome.otf
|
@@ -250,8 +253,6 @@ files:
|
|
250
253
|
- docs/img/tutorials/ecs-console-task-definitions.png
|
251
254
|
- docs/img/tutorials/ecs-console-ufo-ship.png
|
252
255
|
- docs/img/tutorials/ecs-console-ufo-ships.png
|
253
|
-
- docs/img/tutorials/ufo-init.png
|
254
|
-
- docs/img/tutorials/ufo-tasks-build.png
|
255
256
|
- docs/index.html
|
256
257
|
- docs/js/bootstrap.js
|
257
258
|
- docs/js/bootstrap.min.js
|
@@ -273,11 +274,15 @@ files:
|
|
273
274
|
- lib/starter_project/ufo/settings.yml
|
274
275
|
- lib/starter_project/ufo/task_definitions.rb
|
275
276
|
- lib/starter_project/ufo/templates/main.json.erb
|
277
|
+
- lib/starter_project/ufo/variables/base.rb
|
278
|
+
- lib/starter_project/ufo/variables/prod.rb
|
279
|
+
- lib/starter_project/ufo/variables/stag.rb
|
276
280
|
- lib/ufo.rb
|
277
281
|
- lib/ufo/aws_services.rb
|
278
282
|
- lib/ufo/cli.rb
|
279
283
|
- lib/ufo/cli/help.rb
|
280
284
|
- lib/ufo/command.rb
|
285
|
+
- lib/ufo/default/settings.yml
|
281
286
|
- lib/ufo/defaults.rb
|
282
287
|
- lib/ufo/destroy.rb
|
283
288
|
- lib/ufo/docker.rb
|
@@ -292,6 +297,7 @@ files:
|
|
292
297
|
- lib/ufo/ecr.rb
|
293
298
|
- lib/ufo/ecr/auth.rb
|
294
299
|
- lib/ufo/ecr/cleaner.rb
|
300
|
+
- lib/ufo/env.rb
|
295
301
|
- lib/ufo/init.rb
|
296
302
|
- lib/ufo/log_group.rb
|
297
303
|
- lib/ufo/scale.rb
|
Binary file
|
Binary file
|