We often get asked what the difference is between tools like Terraform and Spinnaker. Both products provide a layer of abstraction on top of IaaS providers such as AWS, Google Cloud, Microsoft Azure, Cloud Foundry, Open Stack and others - but Spinnaker contains a workflow and orchestration engine that is purpose-built for cloud software deployments. Spinnaker can be used by DevOps and engineering teams to easily create deployment pipelines (either via a UI or programmatically) to push artifacts into production in highly customizable and flexible way. Using a tool like Terraform to accomplish the same thing would require additional custom scripting that you get out of the box with Spinnaker.
With Terraform, you can provision and manage cloud infrastructure via configuration files that can be versioned and collaborated on through source control. This allows engineers to easily reproduce infrastructure and reduce errors. After speaking with actual Terraform users, we’ve learned that a common use case is the ability to stand up static cloud resources like DNS, VPNs, Subnets and external cloud resources.
It's important to note that Spinnaker is backed 100% by APIs calls all using JSON. This allows you to keep pipeline in a source code repository that is versioned and approved just like any other code at your company. Below is a sample JSON pipeline.