I looked at multi-platform tools initially, but decided that CFN was probably much more suitable for my AWS-only needs. There are several limitations with CFN (especially early on) so I built an engine[0] in NodeJS & Handlebars that allows you to create complex CFN templates from simple JSON "blueprints".
Some of the things I like about it are that it allows me to have multiple environments (Prod, Dev, QA, etc.) where each stack can be slightly different but still related. It also has global variables (ie. office IP address) that allow you to change something in one place and have it be updated everywhere. Finally, AWS resources are defined in Handlebars partials it's easy to add new ones or maintain existing ones as AWS adds more functionality.
It's still a work in progress and I updated it almost every week. If you like working with NodeJS I'm always looking for help. :)
Some of the things I like about it are that it allows me to have multiple environments (Prod, Dev, QA, etc.) where each stack can be slightly different but still related. It also has global variables (ie. office IP address) that allow you to change something in one place and have it be updated everywhere. Finally, AWS resources are defined in Handlebars partials it's easy to add new ones or maintain existing ones as AWS adds more functionality.
It's still a work in progress and I updated it almost every week. If you like working with NodeJS I'm always looking for help. :)
[0] https://www.npmjs.com/package/cfn-builder