Ok, so here's my laundry list. I'm going to use Chef terminology here, but this bleeds over to Docker, Salt, Puppet, etc.
Your stack creation product should force me to use best practices. I should specify the project type and you should do the following.
- prompt me for my source code repo
- set up apache/nginx/caching/db
- run my project
It'd be great for this to work out of the box for major frameworks like rails, django, pyramid, express
Along with that, the folliowing should be included.
#All Projects
- separation of configuration and source code
- nfs mount for editing code on the host machine
- logrotate
- splunk || splunk storm || loggly integration
- sane default CloudWatch metrics like memory usage
- Autoscale friendly deployments (mounted ebs code dir, ebs snapshot on deployment, autoscale user_data pulls from latest snapshot)
- deployments that don't depend on github (tarball pushed to s3 on each commit & installed from on deploy)
#Rails
- passenger in dev and production to tease out threadsafe problems for libs like Redis.
- sane passenger defaults for MaxPoolSize and friends for development and production, based on instance type chosen.
#Python
- virtualenvs that build on each deployment from
requirements.txt
or pip stuff. Don't let system site_packages leak through to developoment - supervisor configuration
#DBs
- RDS support OR
- EBS snapshotting using ec2-consistent-snapshot
- Raid Support
- mysql dumps
#Vagrant
- multi-node deployment mode (several boxes)
- single-node deployment same boxes, different ports