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 0474c7209d
use two versions of yaml 3.0.x instead of 2.x with a replace directive
4 weeks ago
.github add bug report template. 10 months ago
api Adds initial (failing) tests, updates Inline struct 10 months ago
bin add gitignore 11 months ago
certs Use viper for config 10 months ago
config add missing = 9 months ago
cook working on loading in recipes from files 9 months ago
docker Adds dockerfile and docker-compose support, starting on viper config 10 months ago
farmer fix makefile, adjust verbosity 6 months ago
grlx use two versions of yaml 3.0.x instead of 2.x with a replace directive 4 weeks ago
ingredients don't print out cmd.run to stdout/stderr for now 6 months ago
install Add example systemd service files 6 months ago
logos remaster grlx logo 9 months ago
pki docker-compose testing working, adds -A option for keys accept 10 months ago
sprout docker-compose testing working, adds -A option for keys accept 10 months ago
testing working on loading in recipes from files 9 months ago
types move rootball into repo 9 months ago
.dockerignore Adds dockerfile and docker-compose support, starting on viper config 10 months ago
.gitignore gitignore zip files, print stderr by default but add flag to silence it 6 months ago
LICENSE.txt fix license 12 months ago
Makefile make placeholder test clean up after itself 5 months ago
README.md spelling mistake 8 months ago
docker-compose.yml docker-compose testing working, adds -A option for keys accept 10 months ago
go.mod use two versions of yaml 3.0.x instead of 2.x with a replace directive 4 weeks ago
go.sum use two versions of yaml 3.0.x instead of 2.x with a replace directive 4 weeks 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.