Pulumi
Infrastructure as Code using Pulumi with TypeScript for deploying Ever Gauzy.
Why Pulumiโ
- TypeScript โ same language as the platform codebase
- Type safety โ compile-time infrastructure validation
- Real programming โ loops, conditions, functions
- Multi-cloud โ AWS, GCP, Azure, DigitalOcean
Directory Structureโ
.deploy/pulumi/
โโโ Pulumi.yaml # Project configuration
โโโ Pulumi.prod.yaml # Production stack config
โโโ index.ts # Main infrastructure code
โโโ package.json # Dependencies
โโโ tsconfig.json # TypeScript config
Quick Startโ
cd .deploy/pulumi
# Install dependencies
yarn install
# Login to Pulumi
pulumi login
# Create stack
pulumi stack init production
# Preview changes
pulumi preview
# Deploy
pulumi up
# Destroy
pulumi destroy
Exampleโ
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// Database
const db = new aws.rds.Instance("gauzy-db", {
engine: "postgres",
engineVersion: "16",
instanceClass: "db.t3.medium",
allocatedStorage: 50,
dbName: "gauzy",
username: "gauzy_admin",
password: pulumi.secret("secure-password"),
storageEncrypted: true,
});
// S3 for file storage
const bucket = new aws.s3.Bucket("gauzy-uploads", {
acl: "private",
versioning: { enabled: true },
});
// ECS Cluster
const cluster = new aws.ecs.Cluster("gauzy-cluster");
// Export outputs
export const dbEndpoint = db.endpoint;
export const bucketName = bucket.id;
Related Pagesโ
- Terraform โ alternative IaC
- AWS
- Deployment Overview