Terraform Integration Plugin for Spinnaker and Armory CD
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 Version | Terraform Integration Service Version | Terraform Integration Plugin Version |
---|---|---|
1.30.x | 2.30 | 0.0.2 |
1.29.x | 2.28 | 0.0.1 |
1.28.x | 2.28 | 0.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 Versions | Armory CD Version | Spinnaker Version | Notes |
---|---|---|---|
0.12, 0.13, 0.14, 0.15, 1.0, 1.1, 1.2, 1.3 | 2.30 | 1.30 | |
0.12, 0.13, 0.14, 0.15, 1.0, 1.1, 1.2 | 2.28 | 1.28 | Version 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.2 | 2.27 | 1.27 | |
0.11, 0.12, 0.13, 0.14, 0.15, 1.0 | 2.26 | 1.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:
Feature | Armory Continuous Deployment Version | Notes |
---|---|---|
Base Terraform Integration | All supported versions | |
Named Profiles with authorization | All 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 Operator
Spinnaker Operator
Use Kustomize patches to deploy the service and install the plugin.
- Configure Spinnaker.
- Configure the service and plugin.
- Install both at the same time.
Halyard and kubectl
Use Kubernetes manifests to deploy the service and Spinnaker local config files to install the plugin.
- Configure Spinnaker
- Create ServiceAccount, ClusterRole, and ClusterRoleBinding.
- Configure the Terraform Integration service in a ConfigMap.
- Deploy the Terraform Integration service using
kubectl
. - Install the plugin using
hal deploy apply
.
Feedback
Was this page helpful?
Thank you for letting us know!
Sorry to hear that. Please tell us how we can improve.
Last modified October 17, 2023: (aa87b671)