Have a look at https://www.terraform.io/ It seems to match your listed requirements. I much prefer it to Cloudformation.
There are a few downsides: - It's not yet version 1.0 (but seems good enough for real world use) - There are pitfalls about state management and locking (where two people run it at the same time) https://github.com/gruntwork-io/terragrunt should solve that.