From pulumi
Provides Pulumi basics for infrastructure-as-code using programming languages: project structure, TypeScript AWS examples, CLI commands, config, stack references, component resources.
npx claudepluginhub thebushidocollective/han --plugin pulumiThis skill cannot use any tools. It operates in read-only mode without the ability to modify files or execute commands.
Infrastructure-as-code using real programming languages with Pulumi.
Manages Pulumi stacks for dev, staging, and prod environments with Bash commands for creation, selection, configuration, YAML files, and TypeScript config reading.
Generates modular IaC configs for Terraform, CloudFormation, Pulumi, ARM templates, and CDK across AWS, GCP, Azure with variables, outputs, and remote state.
Applies Pulumi best practices for TypeScript/Python IaC: avoid resources in apply(), pass Outputs directly to inputs, manage dependencies/parent-child relationships, refactor with aliases, handle secrets/config/CI.
Share bugs, ideas, or general feedback.
Infrastructure-as-code using real programming languages with Pulumi.
my-infrastructure/
├── Pulumi.yaml # Project file
├── Pulumi.dev.yaml # Stack config
├── index.ts # Main program
└── package.json
name: my-infrastructure
user-invocable: false
runtime: nodejs
description: My infrastructure project
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
// Create VPC
const vpc = new aws.ec2.Vpc("main", {
cidrBlock: "10.0.0.0/16",
enableDnsHostnames: true,
tags: {
Name: "main-vpc",
},
});
// Create subnet
const subnet = new aws.ec2.Subnet("public", {
vpcId: vpc.id,
cidrBlock: "10.0.1.0/24",
availabilityZone: "us-east-1a",
});
// Export outputs
export const vpcId = vpc.id;
export const subnetId = subnet.id;
# Create new project
pulumi new aws-typescript
# Preview changes
pulumi preview
# Apply changes
pulumi up
# Destroy resources
pulumi destroy
# View stack outputs
pulumi stack output
# Set config
pulumi config set aws:region us-east-1
# Set secret
pulumi config set --secret dbPassword mySecret123
# Get config
pulumi config get aws:region
const infraStack = new pulumi.StackReference("org/infra/prod");
const vpcId = infraStack.getOutput("vpcId");
class MyApp extends pulumi.ComponentResource {
constructor(name: string, args: MyAppArgs, opts?: pulumi.ComponentResourceOptions) {
super("custom:app:MyApp", name, {}, opts);
// Create resources
}
}