Status: experimental. Please check the roadmap. Help welcome 🙏!
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.
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
Docker is used to create a reproducible development environment on any machine:
git clone [email protected]:fornellas/resonance.git
cd resonance/
./build.sh
Typically you'll want to stick to ./build.sh rrb
, as it enables you to edit files as preferred, and the build will automatically be triggered on any file changes (Linux only). The full build can be manually done with ./build.sh ci
. A development shell is available with ./build.sh shell
.
The official build relies on ./build.sh
, but in some circumstances (eg: Docker being super slow on Mac) it may be useful to run the build without Docker, which requires manual configuration that is easy to get wrong / be outdated.