In order of complexity you have:
* shell scripts
* AMIs
* vagrant
* docker
Depending on what you need, any one of those may be a valid option for standing up a box.
I could use a shell script to essentially do everything to prepare a box.
If it's a stateless server, then creating an AMI is simple and the image can be used to drive auto-scaling groups etc.
If my local development scenario is more complicated or I'm doing it a lot, maybe vagrant is the better choice. Because then it can setup the box as well as provision a vm with virtualbox.
But if you're doing something in the cloud or something beyond an auto-scaling group, I would look to docker for inspiration.
Depending on what you need, any one of those may be a valid option for standing up a box.
I could use a shell script to essentially do everything to prepare a box.
If it's a stateless server, then creating an AMI is simple and the image can be used to drive auto-scaling groups etc.
If my local development scenario is more complicated or I'm doing it a lot, maybe vagrant is the better choice. Because then it can setup the box as well as provision a vm with virtualbox.
But if you're doing something in the cloud or something beyond an auto-scaling group, I would look to docker for inspiration.
That's where I'm at.