Infrastructure as Code för industriella automationsmiljöer
SEW-EURODRIVE introducerar en Terraform provider som gör det möjligt för kunder att definiera, distribuera och hantera SEW-plattformsresurser med hjälp av Infrastructure as Code (IaC). Denna funktion erbjuds för närvarande som private preview. Om er organisation är intresserad av att delta, vänligen kontakta SEW.
Varför vi byggde det
När en ny tenant skapas i SEW behöver kunder vanligtvis konfigurera ett brett spektrum av resurser – projekt, enheter, gateways, valv, dokument, resursgrupper och mer. 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
- Inte enkelt att upprepa eller granska
- Ingen versionshantering eller ändringshistorik
2. Egen automatisering med SEW: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 boilerplate-kod
- Kunder måste själva hantera idempotens, återförsök och återställning vid partiella fel
- Kräver egen tillståndshantering (state management)
- Svårare att standardisera mellan anläggningar, team och leverantörer
Sammantaget gör dessa utmaningar att onboarding av nya anläggningar och tenants tar längre tid än nödvändigt och introducerar onödiga driftsrisker.
Vad vi bygger
För att lösa dessa problem utvecklar SEW en förstapartsleverantör för Terraform som bygger på HashiCorps branschstandard för IaC. Terraform gör det möjligt för användare att definiera sitt önskade systemtillstånd i ett enkelt deklarativt språk (HCL), och Terraform hanterar:
- Distribution
- Uppdateringar
- Återställningar
- Driftdetektering
- Borttagning
- Tillståndshantering
Detta är samma teknik som SEW 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 alla SEW-resurser via Terraform, inklusive:
- Resursgrupper (inklusive nästlade grupper)
- Projekt
- Enheter
- Gateways
- Dokument
- Valv och hemligheter
- Framtida SEW-objekt
Terraform-konfigurationer kan lagras i Git som vilken annan kod som helst, vilket möjliggör:
- Ändringsspårning
- Kollegial granskning
- Reproducerbara distributioner
- Automatiserade CI/CD-arbetsflöden
Så fungerar det
Terraform kommunicerar med SEW via en anpassad provider som fungerar som en brygga mellan Terraforms deklarativa konfigurationsfiler och SEW: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 SEW
-
SEW 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 motsvarar 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 allteftersom produkten utvecklas.
Tekniska noteringar
Projektet byggdes med SEW:s GraphQL- och REST-API:er:
- GraphQL är mycket effektivt för SEW:s interna kommunikation mellan front-end och back-end, men mer komplext att implementera i en Terraform-provider.
- REST förblir branschstandarden för extern automationsverktygskedja, och vi kommer att fortsätta stödja och vidareutveckla REST-endpoints för kunder.
Intresserad av att använda Terraform-providern?
SEW:s Terraform-provider är för närvarande i private preview.
Vi välkomnar tidiga användare som vill utforska Infrastructure as Code för SEW-miljöer.
Om ni är intresserade av att delta, vänligen kontakta SEW.
Vi arbetar direkt med er för att:
- Utvärdera era användningsfall
- Aktivera åtkomst till private preview
- Tillhandahålla onboarding-stöd
- Samla in feedback som formar den slutliga releasen