Skip to content
MadJlzzPublic

About

Configure fleets of VMs using recipes!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

maddock

An infrastructure-as-code tool written in Go that converges Linux machines to a desired state. Define your packages, config files, and services in YAML manifests, and Maddock ensures they're applied idempotently.

Prerequisites

  • mise for tooling management
  • go

Getting started

# Install tools (Go, golangci-lint, protoc)
mise install

# Build
mise run build

# Test
mise run test

# Integration tests (requires Docker)
mise run test:integration

# Lint
mise run lint

# Generate protobuf code
mise run proto

# Run all checks (lint, build, test)
mise run check

Usage

Try a manifest locally:

maddock-agent apply manifest.yaml

To push from a control plane to remote agents, the wire is mutual TLS, so first bootstrap a CA and certificates:

# Control plane: create the CA + control plane cert
maddock-controlplane init

# Issue a cert per agent host (hostname must match the push config)
maddock-controlplane cert issue --hostname web-1 --output ./web-1/

# On the agent host, with the copied certs:
maddock-agent serve --ca-cert ca.crt --cert web-1.crt --key web-1.key

# Back on the control plane:
maddock-controlplane push

See docs/installation.md for the full bootstrap walkthrough and docs/architecture.md for the trust model.

About

Configure fleets of VMs using recipes!

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages