ansible and vagrant are pretty nice.
Lots of hardcore operations folks will tell you to go with Chef or Puppet because of flexibility/robustness, but it all depends on your infrastructure needs. Chef has A LOT of documentation on deploying things on AWS, and pre-canned recipes for Rails, Scala, etc. type apps, and Puppet has some automation solutions for things like RDP (Windows), though I am not sure if Chef can deal with that, but I digress.
If you want dead simple setup and just need quick, basic deployment automation, check out ansible. If you are starting from the ground up, check out Chef + Berkshelf. You'll want that kind of control if you're going to scale fast and have many types of machines that need provisioning/nannying, it's just very involved.
Three thousand years of beautiful tradition, from Moses to Sandy Koufax, you're god damn right I'm living in the fucking past