Skip to content

Repository files navigation

Comet

Minimal infrastructure orchestration tool for Terraform/OpenTofu with JavaScript configuration.

Features

  • 🚀 JavaScript Configuration - Use a real programming language instead of HCL
  • 🔄 Automatic Backend Generation - No more manual backend.tf files
  • 🔗 Cross-Stack References - Simple state() function for referencing outputs
  • 🔐 Built-in Secrets - Native SOPS integration
  • 📦 Multi-Environment - DRY configurations across dev/staging/prod
  • ⚡ Minimal & Unopinionated - Thin wrapper, you build your own patterns

It's Just JavaScript! Create helper functions, abstractions, and patterns for your team's needs.

Installation

curl -fsSL https://moonwalker.github.io/comet/install.sh | sh

Prerequisites:OpenTofu or Terraform

See installation guide for details.

Quick Start

1. Create a stack file:

// stacks/dev.stack.jsstack('dev',{project: 'myapp',region: 'us-central1'})backend('gcs',{bucket: 'my-terraform-state',prefix: '{{ .stack }}/{{ .component }}'})component('vpc','modules/vpc',{cidr: '10.0.0.0/16'})

2. Run commands:

comet plan dev # Show changes
comet apply dev # Create infrastructure
comet output dev # Show outputs
comet destroy dev # Tear down

Documentation

Key Concepts

Stacks - Environments (dev, staging, prod)

stack('production',{ settings })

Components - Terraform modules

constvpc=component('vpc','modules/vpc',{cidr: '10.0.0.0/16'})

Cross-Stack References - Reference other stacks

cluster_id: '{{ (state "infrastructure" "gke").cluster_id }}'

Secrets - SOPS integration

password: secret('database/password')

Your Own Helpers - It's JavaScript!

functionk8sApp(name,config){returncomponent(name,'modules/k8s-app',{replicas: 2,
...config})}

See full documentation for details.

License

This project is licensed under the terms specified in the project's license file.

About

☄️ Cosmic tool for provisioning and managing infrastructure.

Topics

Resources

Stars

2 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages