Two of the newest DevOps tools that are gaining in popularity are Terraform and Spinnaker.  They are similar in that they both work with multiple cloud providers. Terraform is similar to AWS Cloudformation in that you can use it to provision servers and network resources but not just with AWS but with other cloud providers and in data centers as well.  Spinnaker also supports multiple providers.

Many organizations are using a combination of Jenkins and a tool like Ansible, Puppet, Chef or Salt to automate their CI/CD pipelines but find themselves having to do many steps manually or by using a series of scripts that can be hard to maintain.  Many organizations manually move software from Development to Staging to Production with time-consuming manual processes.

Spinnaker can fully automate these processes. Spinnaker can fully integrate with common CI/CD tools such as Jenkins, SonarQube and Artifactory but adds an additional layer of automation making it possible to automate software deployments to Development, Staging, and Production eliminating many manual steps.  Spinnaker also automates the creation of Canary Analysis and Blue/Green environments. Many large organizations including Netflix and Google use Spinnaker. Spinnaker was developed at Netflix and Google to automate their huge volume of CI/CD pipelines but both large and smaller organizations can benefit from the automation that Spinnaker brings.

Terraform is for Provisioning vs. Spinnaker is for Continuous Deployment

Terraform has become one of the most popular provisioning tools. Spinnaker is a Continuous Deployment Tool.  It provides the ability to manage continuous deployment pipelines with multiple deployment strategies and the ability to roll back easily to previous versions.  Terraform does an excellent job of provisioning the initial environment. Spinnaker can then take over to manage the software deployment process.

Terraform – Infrastructure as Code

Terraform uses an infrastructure a code approach to provide effective, reusable, and safe infrastructure provisioning automation. This approach enables operators to increase their productivity, move quicker, and reduce human error. Terraform Enterprise does add Workspace Management and UI (shown below) although this is not included with the free version of Terraform. 

Terraform Enterprise

Spinnaker – Continuous Deployment

  • Spinnaker provides visibility into your entire deployment pipeline
    • Spinnaker has an all-in-one dashboard that allows you to monitor compilation, baking, deployment and resource management for multiple cloud environments.  Spinnaker combines all the capabilities of existing deployment and management tools into a cohesive, cloud-agnostic package. Spinnaker also provides excellent monitoring and logging capabilities.
  • Spinnaker offers built-in support for creating load balancers, resizing clusters and rollbacks
    • Spinnaker was built to combine CI and CD for streamlined, multi-cloud deployments.  Spinnaker offers built-in support for doing things like creating load balancers, resizing clusters and executing rollbacks.  Spinnaker offers native support for basic and advanced deployments without the need for custom code and scripts.
  • Spinnaker supports built-in deployment strategies
    • Spinnaker offers built-in deployment strategies like blue-green, canary, rolling updates and Highlander. Also, Spinnaker’s automated Canary Analysis capabilities far surpass any features offered by other CI/CD tools.
Spinnaker Continuous Delivery Tool

Both Terraform and Spinnaker support many cloud providers

Both Terraform and Spinnaker have Cloud Support for many Cloud Providers.  Both have support for Google Cloud, AWS, Azure, Kubernetes and Openshift.

Terraform and Spinnaker are Complementary

Spinnaker can be used alongside Terraform in cases where either Spinnaker doesn’t have native support yet (like Bare metal provisioning) or Terraform is used as a provisioning tool where as Spinnaker is used a deployment tool.

Terraform scripts when promoted to production are mostly manual handovers in organizations today. Spinnaker seamlessly automates these handovers using triggers and pipeline expressions.  Terraform has drivers to configure common application platforms like Apache web servers which makes it simpler for deployment to a test environment. However, in production deplyments, this introduces risk as it makes it harder to rollback config changes.

We would love to hear your feedback on this topic, please leave us a comment below.

This blog was authored by Henry Kendall