Infrastructure as Code for Industrial Automation Environments

Terraform Provider for SDA (Private Preview)

Software Defined Automation (SDA) is introducing a Terraform provider that enables customers to define, deploy, and manage SDA platform resources using Infrastructure as Code (IaC). This feature is currently offered in private preview. If your organization is interested in participating, please contact SDA.


Why We Built It

When a new tenant is created in SDA, customers typically need to configure a wide range of resources—projects, devices, gateways, vaults, documents, resource groups, and more. Today, this can only be done in two ways:

1. Manual Setup in the Web Console

  • Time-consuming and repetitive

  • Prone to configuration errors

  • Not easily repeatable or auditable

  • No version control or change history

2. Custom Automation Using SDA APIs

Using REST or GraphQL APIs is more scalable than manual configuration, but it comes with its own challenges:

  • Requires significant development effort and familiarity with our APIs

  • Scripts tend to accumulate boilerplate code

  • Customers must handle idempotency, retries, and partial-failure recovery

  • Requires custom state management

  • Harder to standardize across sites, teams, and vendors

Collectively, these challenges make onboarding new sites and tenants slower than they need to be and introduce unnecessary operational risk.


What We Are Building

To solve these issues, SDA is developing a first-party Terraform provider that uses HashiCorp’s industry-standard IaC framework. Terraform enables users to define their desired system state in a simple declarative language (HCL), and Terraform handles:

  • Deployment

  • Updates

  • Rollbacks

  • Drift detection

  • Deletion

  • State management

This is the same technology SDA uses internally to manage its own AWS cloud infrastructure.

What the Terraform Provider Enables

Once fully implemented, customers will be able to provision and manage all SDA resources via Terraform, including:

  • Resource Groups (including nested groups)

  • Projects

  • Devices

  • Gateways

  • Documents

  • Vaults & Secrets

  • Future SDA objects

Terraform configurations can be stored in Git like any other code, enabling:

  • Change tracking

  • Peer review

  • Reproducible deployments

  • Automated CI/CD workflows

How It Works

Terraform communicates with SDA through a custom provider that acts as a bridge between Terraform’s declarative configuration files and SDA’s APIs (REST and GraphQL).

  • Users define resources in HCL:

  • Terraform translates this into API calls against SDA

  • SDA creates, updates, or deletes resources accordingly

  • Terraform maintains state and ensures actual system state matches the desired configuration


Current Availability

The current Terraform provider provides the following capabilities:

  • Reading Resource Groups

  • Creating Resource Groups

  • Updating Resource Groups

  • Deleting Resource Groups (including nested hierarchies)

Significant portions of the provider architecture, API abstractions, and patterns have been established and will be documented here as the product evolves.

Technology Notes

The project was built using SDA's GraphQL and REST APIs:

  • GraphQL is highly efficient for SDA’s internal front-end ↔ back-end communication, but more complex to implement in a Terraform provider.

  • REST remains the industry standard for external automation tooling, and we will continue supporting and enhancing REST endpoints for customers.


Interested in Using the Terraform Provider?

The SDA Terraform provider is currently in private preview. We welcome early adopters who would like to explore Infrastructure as Code for SDA environments.

If you are interested in participating, please contact SDA.

We will work with you directly to:

  • Evaluate your use cases

  • Enable private preview access

  • Provide onboarding support

  • Gather feedback to shape the final release

Last updated