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 ec221e59a2
Fix out-of-order init call (fixes test ping command)
4 weeks ago
.github add bug report template. 5 months ago
api Adds initial (failing) tests, updates Inline struct 5 months ago
bin add gitignore 6 months ago
certs Use viper for config 5 months ago
config add missing = 4 months ago
cook working on loading in recipes from files 4 months ago
docker Adds dockerfile and docker-compose support, starting on viper config 5 months ago
farmer fix makefile, adjust verbosity 4 weeks ago
grlx Fix out-of-order init call (fixes test ping command) 4 weeks ago
ingredients don't print out cmd.run to stdout/stderr for now 4 weeks ago
install Add example systemd service files 4 weeks ago
logos remaster grlx logo 4 months ago
pki docker-compose testing working, adds -A option for keys accept 5 months ago
sprout docker-compose testing working, adds -A option for keys accept 5 months ago
testing working on loading in recipes from files 4 months ago
types move rootball into repo 4 months ago
.dockerignore Adds dockerfile and docker-compose support, starting on viper config 5 months ago
.gitignore gitignore zip files, print stderr by default but add flag to silence it 4 weeks ago
LICENSE.txt fix license 7 months ago
Makefile Fix make install command 4 weeks ago
README.md spelling mistake 3 months ago
docker-compose.yml docker-compose testing working, adds -A option for keys accept 5 months ago
go.mod Adding rootball with tests 4 months ago
go.sum Adds dockerfile and docker-compose support, starting on viper config 5 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.