Covey
A lightweight Linux cluster orchestration server written in Go
Covey is a project designed to fill a certain void, the lack of a nice lightweight cluster management system.
There are tools like Rundeck (which Covey takes after), that are quite capable, but are far too heavy to be useful.
Features
Covey has, and will gain (in the coming weeks/months) a variety of features, including:
- RESTful API (with swagger docs!)
- Plug-able Modules (ish, it's very broken at the moment)
- Web Interface (basic)
- Node Monitoring (using Netdata)
- Automated Setup (Almost there)
- Crash-only design (pretty much)
Current Roadmap
V0.1 MVP
V0.2 The Refactor
V0.3 Web Interface
- Design and implement the basic web interface
- Implement basic authentication
- Begin adding tests
- Switch away from mux (too slow...)
V0.4 Monitoring
- Fix some issues with the plugin system
- Rework the task module
- Create Node Agent
- Persistent queue
- Add relevant UI elements
- Automatically install agent
- Add SystemD service file to the agent
- Integrate with Netdata for monitoring
-
Add tests
V0.5 A Better API
-
Evaluate designing a very basic framework (for keeping things cleaner)
-
Evaluate GraphQL for the API
- Redesign DB using Gorm
- Fully implement (and test) the API
- Swagger (OpenAPI)
- Fully document the API
V0.6 Alpha
- Fix the plugin system (in progress, checkout github.com/chabad360/plugins
for more details)
- Provide configuration system
- Deal with packed files (
.gitignore
and then include it on build? Switch to //go:embed
)
- CI/CD
- Big Refactor
- Add and refactor tests (Aim for 80% Coverage)
- Complete the web UI
[ ] Add a Makefile (?)
- Refactor agent
State of the Project
Covey is in active development, it's written in Go, and uses Postgres as the database. If you are interested in helping
with development, open a PR with your changes. At the moment, I'm currently polishing off the plugin system and fixing
up the CI/CD process.
Installation Instructions
$ git clone https://github.com/chabad360/covey
$ cd covey
$ goreleser build --snapshot --rm-dist
$ createdb covey
$ ./dist/Covey_linux_amd64/Covey # This will crash, it's meant to (will be fixed)
$ psql -U postgres covey <<EOF
INSERT INTO users(username, password_hash) VALUES(<username>, crypt(<password>, gen_salt('bf')));
EOF
$ ./dist/Covey_linux_amd64/Covey -plugins-folder=./plugins
Use the following command to build covey with live file system changes support:
$ goreleaser build --snapshot --rm-dist
$ go build -tags=live -trimpath github.com/chabad360/covey
Fossa