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
- Program — napíšete infraštruktúru v podporovanom jazyku
- Preview —
pulumi previewzobrazí plánované zmeny - Up —
pulumi upaplikuje zmeny na cloud - 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
ComponentResourcepre znovupoužiteľné komponenty - Píšte unit testy na kritickú infraštruktúru
- Používajte
pulumi configpre 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.