An easy and modern OS deployment tool for clusters.
Today's network booting tools leave much to be desired. Mukluk is an attempt at creating a modern network-booting server for cluster deployment and management without legacy burdens.
- No external dependencies at runtime (except the config file / env vars)
- Boot any network-bootable OS, including Linux installers, thin-nodes, VMware, memtest, WinPE, etc
- Small enough project that it can be understood
- API for external inspection and node self-discovery
Pre-built binary versions can be found under the Releases tag at the top
If you would like to build it yourself:
go get github.com/zgiles/mukluk
A database will need to be configured.
If using MySQL, create the tables from docs/mysql/schema.sql
If using Redis, no work needs to be done, mukluk will create keys on the fly and prefix them with "mukluk:"
mukluk currently pulls its config from the file config.toml, in the same folder as the binary. Fill in the config details. The sample config file is in the docs/
folder
Then run ./mukluk
Logging is to STDERR and pretty verbose.
Optionally make some type of startup script. ( or wait until I do it.. see TODOs)
- Redis plugin may be a bit behind.. mysql should be the only properly working one for now
- Checking of values in the URL is not fully implemented. It could be possible to get a bad field and database error (but it will probably be handled well). It is not recommended to make a mukluk server publicly accessible. It is not very secure.
- API docs
- 12 factor style config, etc, allow config in different location
- startup scripts
- tests
- update redis functionality
- detect schema on database server and update / change it
- flatfile database
- multiple databases / multiple readers writers
- benchmarking
- Debug GUI etc
- CLI tool
- nodediscovery to node conversion
- godocs
- variable verbosity / logging options
- better abstraction in the handlers.go file
- TLS
- dependency versioning
- 0.1.2 - switched everything to MUID for nodes with no UUID, but still need uniqueness. tons of code cleanup. broke out common handlers and code-wide utils. removed old double function DB calls. removed tons of dead code. reordered libraries for better future action
- 0.1.1 - make action on failure an option through config
- 0.1.0 - Initial release
Copyright (c) 2016 Zachary Giles
Licensed under the MIT license.