Bare-metal management system in DC
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.circleci fix etcd version Sep 3, 2018
bin [mtest] do not enable IP forwarding. Jul 26, 2018
client Add sabactl kernelparams subcommand Aug 9, 2018
cmd change etcd TLS config Sep 3, 2018
dhcpd Remove serial console detect Aug 13, 2018
docs Fix typo in doc. Sep 6, 2018
e2e Merge branch 'master' into feature/rm_bmc_restriction Aug 23, 2018
models Merge branch 'master' into feature/rm_bmc_restriction Aug 23, 2018
mtest fix Sep 3, 2018
testdata [tls] Drop etcd-tls option and move certs to e2e/ Aug 2, 2018
web Merge branch 'master' into feature/rm_bmc_restriction Aug 23, 2018
.gitignore Implement management of DHCP config. May 18, 2018
CHANGELOG.md Bump version to 0.20 Sep 3, 2018
LICENSE Fix LICENSE Jun 7, 2018
Makefile Fix sabactl command lines. May 17, 2018
README.md Add documents and changelog file. Jul 24, 2018
RELEASE.md Bump version to 0.19 Aug 24, 2018
asset.go [assets] implement etcd model w/o tests. Jun 13, 2018
audit.go [audit] define model for audit logs. Jun 24, 2018
dhcp.go [dhcp] omit empty dns-servers from JSON Jun 7, 2018
dhcp_test.go [dhcp] implement lease-minutes config option. May 21, 2018
ignition.go Use machien spec to render an ignitions Jun 19, 2018
ignition_test.go [ipam] add offset settings for node/BMC address assignment. Jul 2, 2018
image.go [ignition] create struct has args to build ignition Jun 11, 2018
image_test.go [image] implement getIndex and uploadImage on etcd model May 30, 2018
ipam.go [ipam] treat empty IP address specially. Jul 2, 2018
ipam_test.go [ipam] add offset settings for node/BMC address assignment. Jul 2, 2018
kernel_params.go Fix kernel params control Aug 13, 2018
kernel_params_test.go Fix kernel params control Aug 13, 2018
machines.go Merge branch 'master' into feature/rm_bmc_restriction Aug 23, 2018
machines_test.go fix goimports error Aug 23, 2018
model.go fix GetHealth method Aug 22, 2018
query.go implement indexing by labals Aug 23, 2018
query_test.go implement label feature (without indexing) Aug 23, 2018
version.go Bump version to 0.20 Sep 3, 2018

README.md

GitHub release CircleCI GoDoc Go Report Card

Sabakan

sabakan architecture

Sabakan is an integration service to automate bare-metal server management. It uses etcd as a backend datastore for strong consistency and high availability.

Project Status: Initial development.

Features

  • High availability

    Thanks to etcd, sabakan can run multiple instances while maintaining strong consistency. For instance, DHCP lease information are shared among sabakan instances to avoid conflicts.

  • Machine inventory / IP address management (IPAM)

    Machines in a data center can be registered with sabakan's inventory. In addition, sabakan assigns IP addresses automatically to machines.

  • DHCP service

    Sabakan provides DHCP service that supports UEFI HTTP Boot and iPXE HTTP Boot.

  • HTTP service

    Sabakan serves OS images to machines via HTTP.

  • Distributed asset management

    In order to help initialization of client servers, sabakan can work as a file server from which clients can download assets via HTTP. Assets are automatically synchronized between sabakan servers.

  • Encryption key store

    Sabakan provides REST API to store and retrieve encryption keys to help automated disk encryption/decryption.

  • Life-cycle management

    Sabakan provides API to change server status for life-cycle management.

  • Audit logs

    To track problems and life-cycle events, sabakan keeps operation logs within its etcd storage.

Programs

This repository contains these programs:

  • sabakan: the network service to manage servers.
  • sabactl: CLI tool for sabakan.
  • sabakan-cryptsetup: a utility to encrypt a block device using dm-crypt.

To see their usage, run them with -h option.

Documentation

docs directory contains tutorials and specifications.

Read getting started first.

License

Sabakan is licensed under MIT license.