🟡 Intermediate

Pulumi — IaC v programovacích jazykoch

Pulumi je moderný nástroj na Infrastructure as Code, ktorý umožňuje definovať infraštruktúru v bežných programovacích jazykoch ako TypeScript, Python, Go alebo C#. Na rozdiel od Terraformu nepotrebujete učiť sa špecializovaný jazyk — používate to, čo už poznáte.


Čo je Pulumi?

Pulumi je open-source platforma na vytváranie, nasadzovanie a správu cloudovej infraštruktúry. Namiesto deklaratívnych konfiguračných jazykov (HCL, YAML) využíva plnohodnotné programovacie jazyky so všetkými ich výhodami:

  • Podmienky a cykly — natívne if, for, map
  • Typová kontrola — IDE vám pomáha s autocompletion a chybami
  • Znovupoužiteľnosť — bežné funkcie, triedy, knižnice
  • Testovateľnosť — unit testy pre infraštruktúru

Ako Pulumi funguje

  1. Program — napíšete infraštruktúru v podporovanom jazyku
  2. Previewpulumi preview zobrazí plánované zmeny
  3. Uppulumi up aplikuje zmeny na cloud
  4. State — stav sa ukladá v Pulumi Cloud alebo vlastnom backend

Pulumi používa rovnaké cloud provider API ako Terraform — podporuje AWS, Azure, GCP, Kubernetes a desiatky ďalších.

Príklad v TypeScript

import * as aws from "@pulumi/aws";

const bucket = new aws.s3.Bucket("my-bucket", {
    website: {
        indexDocument: "index.html",
    },
});

const servers = [1, 2, 3].map(i =>
    new aws.ec2.Instance(`web-${i}`, {
        ami: "ami-0c55b159cbfafe1f0",
        instanceType: "t3.micro",
        tags: { Name: `web-server-${i}` },
    })
);

export const bucketUrl = bucket.websiteEndpoint;

Pulumi vs Terraform

  • Jazyk — Pulumi: TypeScript, Python, Go, C# | Terraform: HCL
  • Logika — Pulumi: natívne podmienky a cykly | Terraform: obmedzené count, for_each
  • Testovanie — Pulumi: unit testy v jazyku | Terraform: terraform test, Terratest
  • State — Pulumi: Pulumi Cloud (zadarmo pre jednotlivcov) | Terraform: S3, Terraform Cloud
  • Ekosystém — Terraform má väčšiu komunitu a viac modulov

Praktické použitie

  • Tímy, ktoré preferujú TypeScript/Python pred učením nového jazyka
  • Komplexná infraštruktúra vyžadujúca pokročilú logiku
  • Projekty kde chcete zdieľať kód medzi aplikáciou a infraštruktúrou
  • Multi-cloud nasadenia s jednotným jazykom

Best Practices

  • Organizujte projekty do stackov (dev, staging, production)
  • Využívajte ComponentResource pre znovupoužiteľné komponenty
  • Píšte unit testy na kritickú infraštruktúru
  • Používajte pulumi config pre secrets — šifrované automaticky
  • Držte sa jedného jazyka na projekt pre konzistenciu

Pulumi je ideálna voľba pre vývojárov, ktorí chcú spravovať infraštruktúru rovnakým spôsobom ako aplikačný kód.