Buld and Release Infrastructure as Code with Etcha

Full-Stack Configuration Management for Developers and Sysadmins

Release Artifacts, Not Breaking Changes

Build, test, and release infrastructure as code using Patterns–a list of procedural Commands for Etcha to perform, written in Jsonnet, and deployed like any other software release artifact.

Lint and Test Your Infrastructure Changes

Lint, test, and validate your Patterns before deployment, ensuring they function as intended. Prevent costly downtime.

Centralize or Decentralize Your Deployments

Push Patterns to Etcha clients for centralized control, or pull Patterns from artifact storage for decentralized environments.

Create Dynamic Infrastructure with Events and Webhooks

Trigger Commands and Patterns based on webhooks and events. Streamline workflows and respond rapidly to changes.

No SSH Required, Shell Access Included

Securely connect to any device via HTTP-based shell. Manage your entire infrastructure without opening extra ports.

Write Your Configurations Using Real Code

No more YAML, no more Jinja

local makeApp = import '../lib/myorg/makeApp.libsonnet';
local runApp = import '../lib/myorg/runApp.libsonnet';

{
  build: [
    makeApp(myapp1),
    makeApp(myapp2),
  ],
  run: [
    runApp(runApp1),
    runApp(runApp2),
  ]
}

Deploy Configurations Once, Read From Many

Manage thousands of devices quickly and efficiently

$ etcha build mypattern.jsonnet mypattern.jwt
$ s3 cp mypattern.jwt s3://mybucket/mypattern.jwt
$ etcha listen
INFO  Updating config for myapplication
INFO  Always changed write a file [100ms]

Event Driven Automation

Create bespoke webook integrations to quickly prototype or define new workflows

$ etcha listen
INFO  Always changed trigger event [1ms]
INFO  Changed trigger event [200ms]
INFO  Running source myapp for event trigger from ID trigger event