ops0ops0

IaC Projects

Create and manage Infrastructure as Code projects for Terraform, OpenTofu, Oxid, Pulumi (Upcoming), or CloudFormation (Upcoming).

Creating a Project

Click IaC in the sidebar to view your projects.

Click New Project

Select the + New Project button.

Configure

Enter project name, select IaC type (Terraform, etc.), and add a description.

Create and Edit

Click Create to launch the editor and start building.

Supported IaC Types

Terraform

HashiCorp's infrastructure provisioning tool. Most widely used.

OpenTofu

Open-source Terraform fork. Drop-in compatible.

Oxid

Rust-based IaC engine.

Pulumi (Upcoming)

Infrastructure in TypeScript, Python, Go, or C#.

CloudFormation (Upcoming)

AWS-native infrastructure templates.

Project Card

Each project displays:

FieldDescription
TitleProject name
TypeTerraform, OpenTofu, Oxid, Pulumi (Upcoming), or CloudFormation (Upcoming)
Last UpdatedWhen last modified
FilesNumber of files
CostMonthly estimate (if enabled)
PoliciesAttached compliance policies

Project Actions

ActionDescription
OpenOpen in the editor
EditUpdate name/description
DuplicateCreate a copy
DeletePermanently remove

Policy Badges

ColorSeverityEffect
RedErrorBlocks deployment
YellowWarningShows warning, allows deploy
BlueInfoInformational only

Example: Creating a VPC Project

Here's a complete example of creating a production VPC.

Create Project

  • Name: production-vpc
  • Type: Terraform
  • Description: "Production VPC with public/private subnets"

Ask AI to Write Code

In the chat panel, type:

Create a VPC in us-east-1 with:
- CIDR 10.0.0.0/16
- 2 public subnets in different AZs
- 2 private subnets in different AZs
- Internet gateway and NAT gateway
- Proper route tables

Produced Code

main.tf

resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = {
    Name        = "production-vpc"
    Environment = "production"
  }
}

resource "aws_subnet" "public_1" {
  vpc_id                  = aws_vpc.main.id
  cidr_block              = "10.0.1.0/24"
  availability_zone       = "us-east-1a"
  map_public_ip_on_launch = true

  tags = { Name = "public-subnet-1" }
}

resource "aws_subnet" "private_1" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.10.0/24"
  availability_zone = "us-east-1a"

  tags = { Name = "private-subnet-1" }
}

resource "aws_internet_gateway" "main" {
  vpc_id = aws_vpc.main.id
  tags   = { Name = "production-igw" }
}

resource "aws_nat_gateway" "main" {
  allocation_id = aws_eip.nat.id
  subnet_id     = aws_subnet.public_1.id
  tags          = { Name = "production-nat" }
}

outputs.tf

output "vpc_id" {
  description = "ID of the VPC"
  value       = aws_vpc.main.id
}

output "public_subnet_ids" {
  description = "IDs of public subnets"
  value       = [aws_subnet.public_1.id, aws_subnet.public_2.id]
}

output "private_subnet_ids" {
  description = "IDs of private subnets"
  value       = [aws_subnet.private_1.id, aws_subnet.private_2.id]
}

Deploy

  • Click Validate → Check syntax
  • Click GitHub → Push to repository
  • Click Deploy → Review plan → Apply

Project Structure

├── main.tf          # Primary resources
├── variables.tf     # Input variables
├── outputs.tf       # Output values
├── providers.tf     # Provider configuration
└── terraform.tfvars # Variable values (gitignored)
Tips
  • Use descriptive names like "prod-eks-cluster" or "staging-database"
  • Organize files by purpose: networking.tf, compute.tf, database.tf
  • Add descriptions to help teammates understand the project