Skip to content

Resonance is a host configuration management tool.

License

Notifications You must be signed in to change notification settings

fornellas/resonance

Repository files navigation

Latest Release Push Go Report Card Coverage Status Go Reference License: GPL v3 Buy me a beer: donate

Status: experimental. Please check the roadmap. Help welcome 🙏!

resonance

A configuration management tool with novel features to Ansible, Chef or Puppet:

  • Stateful: Persistent host state enables deletion of old resources, rollback to previous state (on failures) and detection of external changes.
  • Transactional changes: things such as APT packages are done "all together or nothing" (single apt call), eliminating isses with conflicting packages.
  • Painless refresh: no need to manually tell "please restart the service after changes" as these are implicitly declared so things "just work".
  • Painless dependencies: declared order is always respected.
  • Speed: read-only checks and possible changes happen concurrently; a lightweight agent is used so things fly even via SSH.

Install

Pick the latest release with:

GOARCH=$(case $(uname -m) in i[23456]86) echo 386;; x86_64) echo amd64;; armv6l|armv7l) echo arm;; aarch64) echo arm64;; *) echo Unknown machine $(uname -m) 1>&2 ; exit 1 ;; esac) && wget -O- https://github.com/fornellas/resonance/releases/latest/download/resonance.$(uname -s | tr A-Z a-z).$GOARCH.gz | gunzip > resonance && chmod 755 resonance
./resonance --help

Development

Docker is used to create a reproducible development environment on any machine:

git clone git@github.com:fornellas/resonance.git
cd resonance/
./build.sh ci

This will execute the build exactly as it happens on CI. You can get a development shell with ./build.sh shell, from where you can run make help and see other options.

Linux

Under Linux, not only you can have fast local builds exactly as it happens on CI, but you can also have the build run automatically on file changes (via rrb):

./build.sh rrb

Just edit files with your preferred editor and as soon as you save them, the bulid will be executed automatically.

MacOS / Darwin

While the Docker build runs fine under MacOS / Darwin, sadly the performance is notoriously bad (Linux containers run under a VM). It is possible to run the build locally without a container by:

  • Install GNU Make (eg: brew install make)*1
  • Run the build gmake ci.

Note that a lot of the tests are Linux only (all *_linux_test.go files), so while build signal should be representative, test results aren't.

Footnotes

  1. Apple ships an ancient Make version which will NOT work, you must use a recent GNU Make.