Koch

Koch is a tool to install software packages, change files and other things on a single machine. The changes are described in a file and are written in Ruby.

The file describing a machine should be versioned, that way you create a repeatable description of how a machine is set up, with history.

For an example of how this can look like, check out this Rezeptfile and the other files in the directory.

Notice

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT

Fully backup any machine you run this on! This is alpha grade software and might cause havoc, esp when run with root privileges! I suggest you use Vagrant to try this out.

Status

Tests and Rubocop

Philosophy

Koch's configuration files (Rezeptfiles) are just Ruby. All Koch does is provide a bunch of convenience functions. Feel free to use all the Ruby you want.

Usage

sudo apt -y install build-essential git ruby-dev zlib1g-dev
sudo gem install koch
git clone [email protected]:example/machine.git
cd machine
sudo koch

Supported platforms

  • Ubuntu 22.04 (amd64)
  • Ubuntu 24.04 (amd64)
  • Debian 11 (amd64)

TODO

  • [ ] Interactive mode, ask about each change
  • [ ] Implement firewall support firewall do open :ssh open :nginx_full deny 22 allow do source '192.168.0.0/16' interface :eth0 end end
  • [ ] Implement file links