InfraWeave is a cloud-native control plane that bridges the gap between infrastructure as code (IaC) and development teams. It simplifies how you build, manage, and deploy infrastructure templates.
Key features:
-
Multiple Deployment Methods: Deploy infrastructure via GitOps, CLI, Python SDK, or Kubernetes manifests.
-
Terraform-Powered: Built on Terraform for reliable, production-ready infrastructure provisioning.
-
Integration Ready: Works with Backstage Developer Portal and provides APIs for custom integrations.
-
Platform Team Enablement: Publish, version, and upgrade Terraform modules with minimal friction.
-
Developer-Focused: Deploy infrastructure using prebuilt modules without deep Terraform expertise.
-
Documentation as Code: Module documentation lives alongside your Terraform code, staying in sync automatically.
-
Stack Composition: Build and share infrastructure stacks across teams with safe upgrade paths.
-
Low Maintenance: Runs on a minimal set of managed services to reduce operational overhead.
-
Scales With You: Handles everything from small projects to enterprise infrastructure.
-
Cost-Effective: Typically runs for a few dollars per month.
View the features and documentation.
For detailed documentation, visit preview.infraweave.io.
InfraWeave is currently in preview.
Bootstrap your cloud environment by deploying the central and workload modules for your cloud provider. Repository links.
Required components:
- central - Storage and databases for the control plane
- workload - Runtime environments deployed per project (e.g., AWS Account/Azure Subscription)
Start with a Terraform module you want to make available for deployment.
- Prepare your Terraform module (include the
.terraform.lock.hclfile).
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
resource "aws_s3_bucket" "example" {
bucket = var.bucket_name
tags = var.tags
}
variable "bucket_name" {
type = string
}
variable "tags" {
type = map(string)
default = {
Owner = "John Doe"
Department = "Platform"
}
}- Define a
module.yaml
apiVersion: infraweave.io/v1
kind: Module
metadata:
name: s3bucket # The name of the module you define
spec:
moduleName: S3Bucket # metadata.name cannot have any uppercase, which is why we need this
version: 0.0.11-dev # The released version to use
description: "This module deploys an S3 bucket in AWS" # Supports markdown
reference: https://github.com/your-org/s3bucket # The URL to the module's source code- Publish it! (to dev-track)
infraweave module publish dev .Let’s look at four different ways to deploy this module:
- GitOps
- CLI
- Kubernetes
- Python
For the first three options, you will use a manifest like this:
apiVersion: infraweave.io/v1
kind: S3Bucket
metadata:
name: my-s3-bucket
spec:
moduleVersion: 0.0.11-dev # The released version to use, must match the version in the module.yaml
region: us-west-2
variables:
bucketName: my-unique-bucket-name-32142j
tags:
Name234: my-s3bucket
Environment43: devGitOps
With GitOps configured, push the manifest to your repository:
git add s3_manifest.yaml
git commit -m "Add S3 bucket"
git pushCLI
For quick local deployments:
infraweave apply <namespace> s3_manifest.yamlKubernetes
With the operator installed, deploy alongside your application:
kubectl apply -f s3_manifest.yamlPython
Deploy infrastructure programmatically:
from infraweave import S3Bucket, Deployment
bucket_module = S3Bucket(
version='0.0.11-dev',
track="dev"
)
bucket1 = Deployment(
name="bucket1",
module=bucket_module,
region="us-west-2"
)
with bucket1:
bucket1.set_variables(
bucket_name="my-bucket12347ydfs3"
)
bucket1.apply()
# Run tests or perform operations
# Automatic cleanup on context exitThe Python SDK is useful for integration tests involving multiple modules or stacks.
Join the InfraWeave community for help, ideas, and discussions:
- Discord - Chat with the team and other users
Contributions are welcome! See the contribution guide to get started.
Report security vulnerabilities to opensource@infraweave.com rather than creating public issues.
InfraWeave is released under the Apache License 2.0.