I am using tools such as Chef and Puppet in order to bootstrap new EC2 instances. In order to autoscale, I try to keep the install times as fast as possible. For something such as Ruby, I compiled it on one box, then tarballed the binaries and distribute them to new instances via Amazon S3 for quick installs. I'd like to do the same for Erlang since Erlang takes quite a long time to compile and for me to autoscale app servers, I need to keep launches down to a few minutes at most. The problem is, Erlang distributes binaries and other files in a myriad of locations on the filesystem. I'm wondering if there is a trivial way to package it up so that I can simply fetch a tar ball of all required files and untag them on a machine of the same OS/architecture?
You should use your distro's packaging mechanism to package up Erlang itself; your application can be deployed in whatever way you choose, but following the OTP principles gets you one tree of files which can be easily copied into place, no muss, no fuss.