Start here
Introduction
What chaudron is, and how a deployment looks.
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.
(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)))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
| Provider | Resources |
|---|---|
| Hetzner Cloud | servers, SSH keys, firewalls, primary IPs, volumes, networks, load balancers, snapshots |
| Guix System | Guix System installed and deployed on Hetzner servers |
| Cloudflare | DNS records, Workers, KV namespaces, D1 databases |
| Livebox | port 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
- Installation: what chaudron needs, with or without Guix.
- Your first deployment: a server at Hetzner, from
nothing to
ssh. - Stages and Resources: how a run works.