Shared Variables
Often, you end up using the set of common variables across your task definitions for a project. Ufo supports a shared variables concept to support this. You specify variables files in the .ufo/variables folder and they are made available to your .ufo/task_definitions.rb as well as your .ufo/templates files.
For example, given variables/base.rb:
@image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
@cpu = 128
@memory_reservation = 256
@environment = helper.env_file(".env")
You can now use @image in your .ufo/templates/main.json.erb without having to declare them in the .ufo/task_definitions.rb file explicitly. Variables are automatically made available to all templates and the task_definition.rb file.
Layering
Shared variables also support a concept called layering. The variables/base.rb file is treated specially and will always be evaluated. Additionally, ufo will also evaluate the variables/[UFO_ENV].rb according to what UFO_ENV’s value is. Thanks to layering, you can easily override variables to suit different environments like production or development. For example:
.ufo/variables/base.rb:
@image = helper.full_image_name # includes the git sha tongueroo/demo-ufo:ufo-[sha].
@cpu = 128
@memory_reservation = 256
@environment = helper.env_file(".env")
When ufo ship is ran with UFO_ENV=production the variables/production.rb will be evaluated and layered on top of the variables defined in base.rb:
.ufo/variables/production.rb:
@environment = helper.env_vars(%Q[
RAILS_ENV=production
SECRET_KEY_BASE=secret
])
When ufo ship is ran with UFO_ENV=development the variables/development.rb will be evaluated and layered on top of the variables defined in base.rb:
.ufo/variables/development.rb:
@environment = helper.env_vars(%Q[
RAILS_ENV=development
SECRET_KEY_BASE=secret
])
Pro tip: Use the <- and -> arrow keys to move back and forward.
Edit this page
See a typo or an error? You can improve this page. This website is available on GitHub and contributions are encouraged and welcomed. We love pull requests from you!
- Suggest an edit to this page (here's the contributing guide).
- Open an issue about this page to report a problem.