I am heavily AWS focused in my role, and use Cloudformation for my Infrastructure as code.
Most DevOps Engineers I talk to are confused why I use Cloudformation over Terraform as Terraform is cloud-agnostic, they are of the opinion I should be using Terraform as I can then point to a new cloud provider and click, and POOF! your stack has appeared.
It's often attractive to spread infrastructure across multiple clouds to increase fault-tolerance. By using only a single region or cloud provider, fault tolerance is limited by the availability of that provider. Having a multi-cloud deployment allows for more graceful recovery of the loss of a region or entire provider.
Realizing multi-cloud deployments can be very challenging as many existing tools for infrastructure management are cloud-specific. Terraform is cloud-agnostic and allows a single configuration to be used to manage multiple providers, and to even handle cross-cloud dependencies. This simplifies management and orchestration, helping operators build large-scale multi-cloud infrastructures.
How agnostic is Terraform? How much work is needed to deploy a stack with some compute, network & Storage from one cloud provider to another? How true is the above statement? One file point to AWS, Azure, Google and it builds?