Infrastructure-as-Code: Vierte Pulumi-Hauptversion verspricht Universal IaC

Pulumi erlaubt das Bereitstellen von AWS CDK-Konstrukten und erweitert die für IaC offiziell freigegebenen Programmiersprachen um Java und YAML.

In Pocket speichern vorlesen Druckansicht

(Bild: Pulumi)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Gut ein Jahr nach der dritten Hauptversion hat das Entwicklerteam von Pulumi ein neues Major Release seines gleichnamigen Infrastructure-as-Code-Tools vorgelegt. Abweichend von der bisherigen Versionsnomenklatur folgt nun aber nicht Pulumi 4.0, sondern Pulumi Universal IaC. Damit wolle das Open-Source-Projekt seinen Anspruch zum Ausdruck bringen, die breiteste Palette an Entwicklern, Clouds, Programmiersprachen und Cloud-Architekturen zu unterstützen, wie Pulumi-CTO Luke Hoban in seiner Ankündigung unterstreicht. Neu in Pulumi Universal IaC sind unter anderem Support für Java, YAML und das AWS CDK.

Seit der mit Pulumi 3.0 eingeführten Automation API können Entwicklerinnen und Entwickler das IaC-Werkzeug direkt in eigene Anwendungen integrieren, ohne den Weg über die Kommandozeile nehmen zu müssen. Stattdessen steht ihnen eine ständig wachsende Zahl populärer Markup- und Programmiersprachen offen: zu TypeScript/JavaScript, Python, .NET, Go und C# gesellen sich mit dem neuen Release nun auch Java und YAML. Pulumi lässt sich dadurch mit nahezu allen Sprachen aus dem JVM-Ökosystem und den dort etablierten Entwicklungsumgebungen sowie Werkzeugen nutzen. Sämtliche in der Pulumi Registry enthaltenen Packages liegen ab sofort auch als Java-Bibliotheken auf Maven Central parat und die für die Pulumi CLI definierten Arbeitsläufe lassen sich ebenfalls mit Java verwenden. Das folgende Listing verschafft einen Eindruck davon, wie sich beispielsweise ein GKE-Cluster (Google Kubernetes Engine) in Java über Pulumi provisionieren lässt:

package gke_sample;

import java.util.*;
import java.io.*;
import java.nio.*;
import com.pulumi.*;
import com.pulumi.gcp.container.*;
import com.pulumi.kubernetes.core_v1.*;

public class Program {
   private static void stack(Context ctx) {
       // Create a GKE cluster
       var cluster = new Cluster("mygke",
           ClusterArgs.builder()
               .initialNodeCount(1)
               .minMasterVersion("1.20.7")
               .build()
       );

       // Build and export a Kubeconfig for the newly created cluster.
       var kubeconfig = Utils.buildKubeconfig(cluster);
       ctx.export("kubeconfig", kubeconfig);

       // Create a Kubernetes provider instance that uses our cluster from above.
       var clusterProvider = new Provider("gke-provider",
           ProviderArgs.builder().kubeconfig(kubeconfig).build());

       // Create a Kubernetes Namespace
       var ns = new Namespace("test",
           NamespaceArgs.Empty,
           CustomResourceOptions.builder().provider(clusterProvider).build()
       );
   }

   public static void main(String[] args) {
       Pulumi.run(App::stack);
   }
}

Weitergehende Informationen liefern ein separater Blogbeitrag zu Pulumi und Java sowie die einschlägige Dokumentation.

Auch wenn Pulumi in der Vergangenheit stets die Devise vertreten hat, Cloud-Techniker für ihre Arbeit nicht in ein JSON- oder YAML-Korsett zwingen zu wollen, steht letztgenannte Markup-Sprache nun offiziell für IaC-Projekte zur Verfügung – inklusive Zugriff auf sämtliche Kernfunktionen von Pulumi. Wenige Zeilen Code in einer einzigen YAML-Datei sollen genügen, um das IaC-Tooling, native Provider oder auch das Secrets Management zu konfigurieren und zu nutzen. Über YAML erhalten Entwicklerinnen und Entwickler zudem Zugriff auf sämtliche Funktionalitäten im Pulumi-Ökosystem, einschließlich jener Komponenten, die in anderen Programmiersprachen erstellt wurden. So lässt sich beispielsweise ein Amazon-EKS-Cluster über YAML mit einem in TypeScript implementierten EKS-Package konfigurieren, wie das folgende Listing verdeutlicht:

name: eks-cluster
runtime: yaml
resources:
 cluster:
   type: eks:Cluster
outputs:
 kubeconfig: ${cluster.kubeconfig}

Speziell für den Einsatz auf den Cloudplattformen von Amazon bietet Pulumi in der neuen Version nun auch eine Anbindung an das AWS CDK, eine Sammlung von Bibliotheken (sogenannte constructs), die sich für die Infrastrukturprogrammierung und Bereitstellung über AWS CloudFormation nutzen lassen. Cloud-Techniker können die AWS CDK-Konstrukte künftig auch direkt in der Pulumi Cloud Engineering Platform einsetzen und deren kompletten Funktionsumfang für das Deployment nutzen – als Alternative zu CloudFormation. AWS CDK on Pulumi steht zunächst als Public Preview und nur für TypeScript zur Verfügung.

Sämtliche Informationen zu weiteren Neuerungen in Pulumi Universal IaC wie das Update der AWSX-Library (Crosswalk on AWS) auf sämtliche freigegebenen Programmiersprachen, neue Cloud- und SaaS-Provider oder auch erweiterte Konfigurationsoptionen für den Pulumi Service fasst der Blogbeitrag von CTO Luke Hoban zusammen.

(map)