|
2 days ago | |
---|---|---|
.github | 2 months ago | |
api | 2 days ago | |
bin | 2 years ago | |
certs | 2 years ago | |
config | 2 days ago | |
cook | 2 days ago | |
docker | 8 months ago | |
ingredients | 5 days ago | |
install | 1 year ago | |
logos | 2 weeks ago | |
pkg | 2 days ago | |
pki | 2 days ago | |
props | 2 weeks ago | |
testing | 3 days ago | |
types | 2 days ago | |
.dockerignore | 2 years ago | |
.gitignore | 1 year ago | |
LICENSE.txt | 2 years ago | |
Makefile | 2 months ago | |
README.md | 2 weeks ago | |
docker-compose.yml | 2 years ago | |
go.mod | 2 days ago | |
go.sum | 2 days ago | |
notes.md | 4 weeks ago |
README.md
grlx - System management without the stinkin' dependencies!
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 sprout
s, 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 (cook
ed).
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
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.