chaudrondocs

Start here

Introduction

What chaudron is, and how a deployment looks.

On this page

chaudron is a Guile library to describe infrastructure, servers, DNS records, a whole Guix System, as a plain Scheme program, and to deploy it by running that program.

deploy.scm
(use-modules (chaudron)
             (chaudron hetzner)
             (chaudron cloudflare))

(with-stage "prod"
  (define forge
    (hetzner-server "forge" #:type "cx23" #:location "fsn1"))

  (cloudflare-dns-record "git"
                         #:zone "example.com"
                         #:content (output forge 'ipv4)))
output
chaudron: create hetzner-server/forge
chaudron: create cloudflare-dns-record/git

No CLI, no plan to apply

There is no command to learn and no separate plan step. Each resource call, like hetzner-server, looks at the real resource and makes it match what the program says, right away. Then it returns the resource, whose outputs, such as its address, can be given to the next calls.

Since a deployment is a program, the whole of Guile is at hand: procedures to declare several similar servers, loops, modules shared between projects, conditions on the environment.

What it manages

ProviderResources
Hetzner Cloudservers, SSH keys, firewalls, primary IPs, volumes, networks, load balancers, snapshots
Guix SystemGuix System installed and deployed on Hetzner servers
CloudflareDNS records, Workers, KV namespaces, D1 databases
Liveboxport forwards and DHCP leases of an Orange Livebox, experimental

You can write your own provider: it is a module with a few procedures.

Where to go next