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
- Configure Armory CD.
- Enable Terraform Integration.
- Apply the updated configuration.
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)