Terraform Integration Plugin for Spinnaker and Armory CD

The Terraform Integration plugin enables provisioning infrastructure using Terraform as part of your Spinnaker and Armory Continuous Deployment pipelines.

Proprietary Generally available

Overview of Terraform Integration

Armory’s Terraform Integration feature integrates your infrastructure-as-code Terraform workflow into your SDLC. The integration interacts with a source repository you specify to deploy your infrastructure as part of a Spinnaker pipeline.

Terraform Integration has two components - the plugin and the standalone service.

  • Terraformer service

    • Stores Terraform jobs in an execution queue
    • Execute those jobs
    • Exposes an API to monitor jobs executions
  • Spinnaker plugin

    • Extends Orca with a new stage and 3 tasks - run terraform, monitor terraform run, bind produced artifacts
    • Extends Deck with new component
    • Extends Gate with new API

Additionally, Terraform Integration requires a Redis instance to store Terraform logs and plans. For production, you should have a dedicated external Redis instance to ensure that you do not encounter scaling or stability issues.

Spinnaker compatibility matrix

Spinnaker VersionTerraform Integration Service VersionTerraform Integration Plugin Version
1.30.x2.300.0.2
1.29.x2.280.0.1
1.28.x2.280.0.1

Supported Terraform versions

Not all patch versions are included for each release. Although other Terraform versions may be usable with Spinnaker/Armory CD and Terraform Integration, Armory only supports the versions listed here.

Terraform VersionsArmory CD VersionSpinnaker VersionNotes
0.12, 0.13, 0.14, 0.15, 1.0, 1.1, 1.2, 1.32.301.30
0.12, 0.13, 0.14, 0.15, 1.0, 1.1, 1.22.281.28Version 0.12 was not available in 2.28 but is supported as of release 2.28.1.
0.11, 0.12, 0.13, 0.14, 0.15, 1.0, 1.1, 1.22.271.27
0.11, 0.12, 0.13, 0.14, 0.15, 1.02.261.26

Armory ships several versions of Terraform as part of the Terraform Integration feature. The Terraform binaries are verified by checksum and with Hashicorp’s GPG key before being installed.

When creating a Terraform Integration stage, pipeline creators select a specific available version from a list of available versions:

![Terraform version to use](/images/plugins/terraform/terraform_version.png" >}}

All Terraform stages within a pipeline that affects state must use the same Terraform version.

Supported Terraform features

The following table lists the Terraform Integration features and their supported versions:

FeatureArmory Continuous Deployment VersionNotes
Base Terraform IntegrationAll supported versions
Named Profiles with authorizationAll supported versions

Installation paths

Terraform Integration is a feature in Armory CD, so you only need to enable the service. For Spinnaker, however, you need to install both the Terraform Integration service and the Spinnaker plugin.

Armory CD
Armory Operator

  1. Configure Armory CD.
  2. Enable Terraform Integration.
  3. Apply the updated configuration.

Instructions

Spinnaker
Spinnaker Operator

Use Kustomize patches to deploy the service and install the plugin.

  1. Configure Spinnaker.
  2. Configure the service and plugin.
  3. Install both at the same time.

Instructions

Spinnaker
Halyard and kubectl

Use Kubernetes manifests to deploy the service and Spinnaker local config files to install the plugin.

  1. Configure Spinnaker
  2. Create ServiceAccount, ClusterRole, and ClusterRoleBinding.
  3. Configure the Terraform Integration service in a ConfigMap.
  4. Deploy the Terraform Integration service using kubectl.
  5. Install the plugin using hal deploy apply.

Instructions


Last modified October 17, 2023: (aa87b671)