Central Deployer Pattern
UFO can be use as either an app-centric or ops-centric tool.
- app-centric: Each app repo has it’s own
.ufo
settings files. This is useful if your applications are very differently setup. - ops-centric: Each app repo has pretty much the same
.ufo
settings files. This is useful if your applications are very similarly set up.
Setup
With an ops-centric approach, you use the same .ufo
settings files for the app repos you want to use. For example:
https://github.com/org/app1
https://github.com/org/app2
You then also have a
https://github.com/org/ufo-central
You can copy the ufo-central
repo into the app repo folder with the ufo central update command like so:
cd app1
ufo central update
You’ll end up with something like this:
app1/.ufo
app2/.ufo
Then to deploy different app level settings.
For app1:
cd app1
export UFO_APP=app1
ufo ship
And for app2:
cd app1
export UFO_APP=app2
ufo ship
Also check out: Layering and IAM Role Docs.
The central deployer approach is removes duplication of the ufo config files between projects. Leveraging app-level overrides provide a great degree of control.
If the settings start to diverge too much, then it probably makes sense to use separate .ufo
files in that app specific repo.