I blogged about the difference and similarities between AWS CloudFormations and Oracle Assembler builder to package your software stack for deployment/provisioning to the cloud. However, these tools do not deal with software stack versioning and configuration management. This is where tools like Chef and Puppet come into play.
Puppet and Chef points of interest:
1. Can be used in any cloud environment (rackspace, private cloud etc).
2. There is a debate between which is better. I am not going to get into this debate other then to say Puppet is more mature.
3. AWS CloudFormations can integration with both Chef and Puppet.
A good blog on AWS CloudFormations and the need for something more: