Hoppa till huvudinnehåll

Infrastructure as Code för industriella automationsmiljöer

Software Defined Automation (SDA) introducerar en Terraform-provider som gör det möjligt för kunder att definiera, distribuera och hantera resurser på SDA-plattformen med hjälp av Infrastructure as Code (IaC). Denna funktion erbjuds för närvarande som privat förhandsversion. Om din organisation är intresserad av att delta, kontakta SDA.


Varför vi byggde det​

När en ny tenant skapas i SDA behöver kunder normalt konfigurera en mängd olika resurser – projekt, enheter, gateways, vaults, dokument, resursgrupper med mera. I dag kan detta endast göras på två sätt:

1. Manuell konfiguration i webbkonsolen​

  • Tidskrävande och repetitivt
  • Känsligt för konfigurationsfel
  • Svårt att upprepa eller granska
  • Ingen versionshantering eller ändringshistorik

2. Egen automatisering via SDA:s API:er​

Att använda REST- eller GraphQL-API:er är mer skalbart än manuell konfiguration, men medför egna utmaningar:

  • Kräver betydande utvecklingsinsats och kännedom om våra API:er
  • Skript tenderar att samla på sig repetitiv standardkod
  • Kunden måste själv hantera idempotens, omförsök och återhämtning vid partiella fel
  • Kräver egen tillståndshantering
  • Svårare att standardisera mellan anläggningar, team och leverantörer

Sammantaget gör dessa utmaningar att införandet av nya anläggningar och tenants tar längre tid än nödvändigt och introducerar onödiga operativa risker.


Vad vi bygger​

För att lösa dessa problem utvecklar SDA en egenutvecklad Terraform-provider som bygger på HashiCorps branschstandard för IaC. Terraform gör det möjligt för användare att definiera önskat systemtillstånd i ett enkelt deklarativt språk (HCL), varefter Terraform hanterar:

  • Distribution
  • Uppdateringar
  • Återställningar
  • Avvikelsedetektering (drift detection)
  • Borttagning
  • Tillståndshantering

Detta är samma teknik som SDA använder internt för att hantera sin egen AWS-molninfrastruktur.

Vad Terraform-providern möjliggör​

När den är fullt implementerad kommer kunder att kunna provisionera och hantera samtliga SDA-resurser via Terraform, inklusive:

  • Resursgrupper (inklusive nästlade grupper)
  • Projekt
  • Enheter
  • Gateways
  • Dokument
  • Vaults och hemligheter
  • Framtida SDA-objekt

Terraform-konfigurationer kan lagras i Git som all annan kod, vilket möjliggör:

  • Ändringsspårning
  • Kollegial granskning
  • Reproducerbara distributioner
  • Automatiserade CI/CD-arbetsflöden

Så fungerar det​

Terraform kommunicerar med SDA via en anpassad provider som fungerar som en brygga mellan Terraforms deklarativa konfigurationsfiler och SDA:s API:er (REST och GraphQL).

  • Användare definierar resurser i HCL:

    resource "sda_resource_group" "example" {
    name = "Production"
    parent_id = "root"
    }
  • Terraform översätter detta till API-anrop mot SDA

  • SDA skapar, uppdaterar eller tar bort resurser i enlighet med detta

  • Terraform upprätthåller tillståndet och säkerställer att det faktiska systemtillståndet matchar den önskade konfigurationen


Nuvarande tillgänglighet​

Den nuvarande Terraform-providern erbjuder följande funktioner:

  • Läsa resursgrupper
  • Skapa resursgrupper
  • Uppdatera resursgrupper
  • Ta bort resursgrupper
    (inklusive nästlade hierarkier)

Betydande delar av providerns arkitektur, API-abstraktioner och mönster har etablerats och kommer att dokumenteras här i takt med att produkten utvecklas.

Tekniska noteringar​

Projektet byggdes med SDA:s GraphQL- och REST-API:er:

  • GraphQL är mycket effektivt för SDA:s interna kommunikation mellan frontend och backend, men mer komplext att implementera i en Terraform-provider.
  • REST är fortsatt branschstandard för externa automationsverktyg och vi kommer att fortsätta stödja och vidareutveckla REST-slutpunkter för kunder.

Intresserad av att använda Terraform-providern?​

SDA:s Terraform-provider är för närvarande i privat förhandsversion.
Vi välkomnar tidiga användare som vill utforska Infrastructure as Code för SDA-miljöer.

Om du är intresserad av att delta, kontakta SDA.

Vi arbetar då direkt med dig för att:

  • Utvärdera dina användningsfall
  • Aktivera åtkomst till den privata förhandsversionen
  • Ge stöd vid införandet
  • Samla in feedback som formar den slutliga releasen