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 2e2fb20ef2
Adding rootball with tests
1 day ago
.github add bug report template. 1 month ago
api Adds initial (failing) tests, updates Inline struct 4 weeks ago
bin add gitignore 2 months ago
certs Use viper for config 1 month ago
config farmer config and dockerization updates, cli feature additions 1 month ago
docker Adds dockerfile and docker-compose support, starting on viper config 1 month ago
farmer farmer config and dockerization updates, cli feature additions 1 month ago
grlx Adds yaml error support 4 weeks ago
ingredients adds missing mutex unlock, fixes Fatal error 1 month ago
logos add newleaf sponsor image 1 month ago
pki docker-compose testing working, adds -A option for keys accept 1 month ago
rootball Adding rootball with tests 1 day ago
sprout docker-compose testing working, adds -A option for keys accept 1 month ago
testing Adds initial (failing) tests, updates Inline struct 4 weeks ago
types move rootball into repo 2 days ago
.dockerignore Adds dockerfile and docker-compose support, starting on viper config 1 month ago
.gitignore Adds initial (failing) tests, updates Inline struct 4 weeks ago
LICENSE.txt fix license 3 months ago
Makefile farmer config and dockerization updates, cli feature additions 1 month ago
README.md Updates README to new binary names 1 month ago
docker-compose.yml docker-compose testing working, adds -A option for keys accept 1 month ago
go.mod Adding rootball with tests 1 day ago
go.sum Adds dockerfile and docker-compose support, starting on viper config 1 month 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 agreemnts. 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.