Skip to content

infraweave-io/infraweave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InfraWeave


     

 

Discord  


  What is InfraWeave?

InfraWeave is an cloud-native control plane designed to minimize the gap between infrastructure as code (IaC) and the developer teams. With InfraWeave, you can simplify development of infrastructure templates, managing, updating, deploying it swiftly, easy and cost-effectively.

Key features of InfraWeave include:

  • 🚀 Multi-Deploy Support: Define your infrastructure using GitOps, CLI commands, Python scripts, or Kubernetes manifests, catering to diverse workflows.

  • ⚙️ Terraform Engine: Harness the reliability and flexibility of Terraform, a battle-tested tool for infrastructure provisioning.

  • 🔗 Seamless Integrations: Fully integrates with the Backstage Developer Portal and offers an API for custom integrations.

  • 👩‍💻 Platform-Friendly: Enables platform teams to publish, test, and upgrade existing Terraform modules effortlessly.

  • 💡 Developer-First Deployment: Simplifies infrastructure deployment for developers using prebuilt, reusable modules.

  • 📄 Code-Coupled Documentation: Ensures documentation stays accurate and aligned by directly integrating it with Terraform code and module/stack manifests.

  • 🤝 Collaborative Stacks: Facilitate collaboration by building tailored stacks for teams, ensuring safe and seamless upgrades.

  • 🛠️ Minimal Maintenance: Leverages a minimal set of managed services to significantly reduce operational overhead.

  • 📈 Scalable by Design: Built to scale seamlessly with cloud infrastructure, supporting everything from small projects to enterprise-level deployments.

  • 💸 Cost-Efficient: Optimized for usage, typically costing only a few dollars per month, making it accessible for teams of all sizes.

  • 🌟 Open Source: Join a thriving community to shape the future of infrastructure together—let’s build it collaboratively! 🎉

View the features and documentation.

𝌞  Contents

📖  Documentation

To read the up-to-date documentation, please check out our documentation

📖  Current Status

The project is currently in preview 👀

🟩  Getting Started

Setting up the platform

To bootstrap your cloud, set up the central and workload modules for your desired cloud provider, find them here.

You need to set up:

  • central - storage and databases required by the control plane
  • workload - runtime environments which should be deployed per project (e.g. AWS Account/Azure Subscription)

Publish a module

It all starts with you having a Terraform module available that you want to deploy.

  1. Have a terraform module ready (including the lockfile .terraform.lock.hcl).
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"
  }
}
  1. 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
  1. Publish it! (to dev-track)
infraweave module publish dev .

Deploy an available module

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
  namespace: default
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: dev
  • GitOps

Given that it is configured, simply push the claim to your repository, that’s it! 🎉

  • CLI

In case you want to set something up quick and dirty from your local computer, this is easy:

Using the same manifest file as above

infraweave apply <some-namespace-here> s3_manifest.yaml
  • Kubernetes

Given you have installed the operator you might want to create an S3 Bucket next to your application in a Kubernetes cluster, this is as simple as this:

kubectl apply -f s3_manifest.yaml
  • Python

Use python to set up you infrastructure readily available from the platform.

from infraweave import S3Bucket, Deployment

bucket_module = S3Bucket(
    version='0.0.11-dev',
    track="dev"
)

bucket1 = Deployment(
    name="bucket1",
    namespace="playground",
    module=bucket_module,
    region="us-west-2"
)

with bucket1:
    bucket1.set_variables(
        bucket_name="my-bucket12347ydfs3"
    )
    bucket1.apply()
    # Run some tests here

# bucket1.destroy() is automatically called when finished (or on error)

This can also be used to create integration tests with multiple modules or stacks

🧑‍💻  Community

Join our growing community around the world, for help, ideas, and discussions regarding InfraWeave.

🛟  Contributing

We would ❤️ for you to get involved with InfraWeave development! If you wish to help, you can learn more about how you can contribute to this project in the contribution guide.

🔒  Security

For security issues, kindly email us at opensource@infraweave.com instead of posting a public issue on GitHub.

🪪  License

Source code for InfraWeave is released under the Apache Licence 2.0.

About

A cloud-native control plane uniting platform and dev teams to make infrastructure effortless.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors 3

  •  
  •  
  •  

Languages