I will describe the approach that currently works for me for regular (often daily) releases for a small number of instances on EC2:
- I installed my project with fixtures and tested it on github.
- All my dependencies are listed in my rebar.config file (they are also on github).
- My Makefile is similar to what I described here .
- My EC2 image only has a standard erlang build and no other libs installed by default.
- To create a new node, I deploy the instance, clone my git repository and run
make . This will get my addictions and build everything. - To update the code, I do
git pull and rebar update-deps . Depending on what has changed, I can restart the node or, often, I will connect to a working node and reload the updated modules. This helps to run and attach scripts as part of your project.
It may be useful to see how a project is packaged, such as webmachine .
I don’t know much about the standard OTP release management system, except that it looks like a lot of work. Since this seems to run counter to rapid deployment, I have never experienced a serious attempt - although I am sure it makes sense for other projects.
source share