You can not 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 d992fa6ac7
gofumpt: underscores and dot imports
2 weeks ago
.github add bug report template. 1 year ago
api remove pki dot imports 2 months ago
bin add gitignore 1 year ago
certs Use viper for config 1 year ago
config add missing = 1 year ago
cook working on loading in recipes from files 1 year ago
docker reorg to pkgs 2 months ago
ingredients don't print out cmd.run to stdout/stderr for now 11 months ago
install Add example systemd service files 11 months ago
logos remaster grlx logo 1 year ago
pkg gofumpt: underscores and dot imports 2 weeks ago
pki docker-compose testing working, adds -A option for keys accept 1 year ago
testing working on loading in recipes from files 1 year ago
types stubbing of parser 3 weeks ago
.dockerignore Adds dockerfile and docker-compose support, starting on viper config 1 year ago
.gitignore gitignore zip files, print stderr by default but add flag to silence it 11 months ago
LICENSE.txt fix license 1 year ago
Makefile remove reference to prior twitch project 2 months ago
README.md spelling mistake 1 year ago
docker-compose.yml docker-compose testing working, adds -A option for keys accept 1 year ago
go.mod update go build version + log-socket dependencies 2 months ago
go.sum update go build version + log-socket dependencies 2 months ago

README.md

grlx - System management without the stinkin' dependencies!

License 0BSD Go Report Card GoDoc Slack

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.