🌐 Pulumi
Инфраструктура как код на обычных языках: проекты, стеки, ресурсы и команды.
Шпаргалки · Инфраструктура · #pulumi #iac
Идея
Описываете инфраструктуру на TypeScript, Python, Go, C#, Java или YAML. Состояние хранится в Pulumi Cloud или своём backend (S3, локально).
Команды
pulumi new aws-typescript # проект из шаблона
pulumi stack init dev # стек (окружение)
pulumi config set aws:region eu-central-1
pulumi config set --secret dbPassword s3cret
pulumi preview # план изменений
pulumi up # применить
pulumi stack output
pulumi destroy
pulumi stack ls / select
pulumi login --local # хранить состояние локально
Пример (TypeScript)
import * as aws from "@pulumi/aws";
import * as pulumi from "@pulumi/pulumi";
const cfg = new pulumi.Config();
const env = cfg.require("env");
const bucket = new aws.s3.Bucket("logs", {
tags: { Env: env },
});
export const bucketName = bucket.id;
Понятия
| Термин | Смысл |
|---|---|
| Project | папка с Pulumi.yaml |
| Stack | экземпляр проекта: dev, stage, prod |
| Resource | объект инфраструктуры |
| Output | значение, известное после создания (pulumi.Output<T>) |
| Config | настройки и секреты стека |
| Component | собственная абстракция из нескольких ресурсов |
Приёмы
- Значения-обещания читайте через
.apply(v => ...)илиpulumi.interpolate. - Секреты шифруются в конфиге и в состоянии.
- Импорт существующего:
pulumi import. - Тестирование: обычные unit-тесты на языке проекта, плюс проверки политик (CrossGuard).
Terraform или Pulumi
Terraform: HCL, огромная экосистема, простая модель. Pulumi: циклы, функции и тесты настоящего языка.