You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Tai Groot caeb5e6855
gofmt config
2 days ago
.github upgrade codeql version 2 months ago
api add a first stab at handling incoming cook api call 2 days ago
bin add gitignore 2 years ago
certs Use viper for config 2 years ago
config gofmt config 2 days ago
cook fix formatting and shadowing, add stub for cli pki 2 days ago
docker reorg to pkgs 8 months ago
ingredients fix method names, sort 5 days ago
install Add example systemd service files 1 year ago
logos add adatomic sponsor 2 weeks ago
pkg add a first stab at handling incoming cook api call 2 days ago
pki use filepath join correctly 2 days ago
props add tests for collectIncludes 2 weeks ago
testing fix recipe parsing 3 days ago
types add a first stab at handling incoming cook api call 2 days ago
.dockerignore Adds dockerfile and docker-compose support, starting on viper config 2 years ago
.gitignore gitignore zip files, print stderr by default but add flag to silence it 1 year ago
LICENSE.txt fix license 2 years ago
Makefile update PHONY directives 2 months ago
README.md add adatomic sponsor 2 weeks ago
docker-compose.yml docker-compose testing working, adds -A option for keys accept 2 years ago
go.mod update go deps 2 days ago
go.sum update go deps 2 days ago
notes.md rename recipestep (for now) 4 weeks ago

README.md

grlx - System management without the stinkin' dependencies!

License 0BSD Go Report Card GoDoc Slack CodeQL

grlx (pronounced "garlic") is a pure-Go alternative to other DevOps automation engines, such as Salt or Ansible.

Installation

grlx is made up of three components: the farmer, one or many sprouts, and a CLI utility, grlx. The farmer binary runs as a daemon on a management server (referred to as the 'farmer'), and is controlled via the grlx cli. grlx can be run both locally on the management sever or remotely over a secure-by-default, TLS-encrypted API. The sprout binary should be installed as a daemon on systems that are to be managed. Managed systems are referred to as 'sprouts.'

All binaries are built without CGO, and should therefore be compatible with as many Linux systems as possible.

Architecture

farmer contains an embedded messaging Pub-Sub server (NATS), and an api server. Nodes running sprout subscribe to messages over the bus. Both the API server and the messaging bus use TLS encryption (elliptic curve by default), and sprouts authenticate using public-key cryptography.

Jobs can be created with the grlx command-line interface, and typically come in the form of stateful targets, called 'recipes'. Recipies are yaml documents which describe the desired state of a sprout after the recipe is applied (cooked). Because the farmer exposes an API, grlx is by no means the only way to create or manage jobs, but it is the only supported method at the beginning.

Roadmap

Some features (not yet ordered) that are coming to grlx:

  • Command execution
  • BSD + Windows support (grlx client support already exists, but management does not)
  • Encrypted secrets management
  • Environments
  • External TLS certificates (i.e. LetsEncrypt, or self-signed)
  • File management
  • Git integration
  • Integrated web-based dashboard
  • Job progress
  • RBAC
  • Remote shell access (dropshell)
  • S3 object storage support
  • Service management
  • Simple monitoring data and collection
  • Standardized error handling
  • Support for non-systemd init systems
  • Template shell-based rendering
  • ... Many more!

Contributing

This project is not yet ready to accept code contributions. Notably, when working with new libraries, I (@taigrr) write code in three phases. The first cut is very ugly, and does not follow best practices or handle errors correctly. It is frankly, unacceptable for deployment until the third revision.

All code contained herein is in working-draft mode, and should not be used in production until a semantic version is released.

However, if you like what you're seeing and want to bring grlx 'to market' sooner, please feel free to throw some financial encouragement my way!

XMR: 835Vpty7GkGhinCchD7uy8SXcKu8E6oY4buz45toMCF8UcrqxiLSRQsdKd4hNGL8odHUDxd7GPuBGYK5NxCqmUj6G7iKxsb

BTC: bc1qafg9cqkxzfyj5adcr3l6ekp8x8fwzl30uawtgz

GitHub:

Sponsors

A big thank you to all of grlx's sponsors. It's your donations that allow development to continue so that grlx can grow.

Founders Club

License

Dependencies may carry their own license agreements. To see the licenses of dependencies, please view DEPENDENCIES.md.

Unless otherwise noted, the grlx source files are distibuted under the 0BSD license found in the LICENSE file.

All grlx logos are Copyright 2021 Tai Groot, and Licensed under CC BY 3.0.

The original Go Gopher was designed by Renee French.