Why Pulumi
Pulumi lets you define infrastructure in TypeScript, Python, Go, C#, or Java — real languages with real IDEs, real testing, and real package managers. No HCL, no YAML.
Install
brew install pulumi
Create AWS Resources in TypeScript
import * as pulumi from '@pulumi/pulumi';
import * as aws from '@pulumi/aws';
const bucket = new aws.s3.Bucket('my-bucket', {
website: {
indexDocument: 'index.html',
},
});
const instance = new aws.ec2.Instance('web', {
instanceType: 't3.micro',
ami: 'ami-0c55b159cbfafe1f0',
tags: { Name: 'web-server' },
});
export const bucketUrl = bucket.websiteEndpoint;
export const publicIp = instance.publicIp;
pulumi up # Deploy
pulumi preview # Preview changes
pulumi destroy # Tear down
Kubernetes in Python
import pulumi
import pulumi_kubernetes as k8s
app = k8s.apps.v1.Deployment('myapp',
spec=k8s.apps.v1.DeploymentSpecArgs(
replicas=3,
selector=k8s.meta.v1.LabelSelectorArgs(
match_labels={'app': 'myapp'},
),
template=k8s.core.v1.PodTemplateSpecArgs(
metadata=k8s.meta.v1.ObjectMetaArgs(
labels={'app': 'myapp'},
),
spec=k8s.core.v1.PodSpecArgs(
containers=[k8s.core.v1.ContainerArgs(
name='myapp',
image='nginx:latest',
ports=[k8s.core.v1.ContainerPortArgs(container_port=80)],
)],
),
),
),
)
Testing Infrastructure
import { describe, it, expect } from 'vitest';
import * as pulumi from '@pulumi/pulumi';
pulumi.runtime.setMocks({ ... });
describe('Infrastructure', () => {
it('should create S3 bucket with website config', async () => {
const { bucket } = await import('./index');
const website = await bucket.website.promise();
expect(website?.indexDocument).toBe('index.html');
});
});
Key Features
- Real languages — TypeScript, Python, Go, C#, Java
- IDE support — autocomplete, type checking, refactoring
- Testing — unit test infrastructure like application code
- State management — Pulumi Cloud or self-managed backends
- All providers — AWS, Azure, GCP, K8s, 150+ providers
- Import — bring existing resources under management
Resources
Need to extract cloud infrastructure data or provider APIs? Check out my Apify tools or email spinov001@gmail.com for custom solutions.
Top comments (0)