You want to avoid CloudFormation because it’s slow, you don’t have much insight to what it’s doing while it’s running (the interface really sucks), it’s hard to stop it, and there are cases where it will get stuck for 4 hours (if certain internal components hang, it will retry twice with a 2 hr timeout and not even AWS premium support can unblock you). Terraform puts all of the control about what’s going on in your hands, the syntax is much simpler (CF’s json format is way too much syntax), and the “modules” feature allows for way simpler reusability.
From https://medium.com/@blockjon/scaling-jenkins-bad7a4ea046f