Skip to content
/ bagel Public

A configuration management system written in Go and Lua

Notifications You must be signed in to change notification settings

jtopjian/bagel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOTE: Until there's an actual binary release made in releases, consider this a proof of concept and not guaranteed to work at all.

Bagel

Yet another configuration management tool I dreamed up.

Bagel builds off of previous projects such as Waffles and Yak. It supports:

  • The ability to write configuration management manifests in Lua. This means you can use if conditionals and for loops natively.

  • Being able to work with remote communication protocols other than SSH. This means Bagel can (and probably will) support protocols such as LXD, Docker, etc. This can extend beyond simply remotely executing a command: when available, Bagel can take advantage of remote file API rather than just echo'ing or cat'ing content to a file.

  • Is written in Go and distributed as a single Go binary for ease of use. A plugin system might be available in the future since it might be quite useful.

Quickstart

  1. Download Bagel.
  2. Create a directory:
$ mkdir /opt/bagel
$ cd /opt/bagel
  1. Add some hsots to a file:
$ echo example1.com >> hosts.txt
$ echo example2.com >> hosts.txt
  1. Create a site.yaml file::
roles:
  hello:
    inventories:
      - my_hosts

inventories:
  my_hosts:
    type: textfile
    options:
      file: /opt/bagel/hosts.txt
    connection: ssh

connections:
  ssh:
    type: ssh
  1. Create a "hello" role in /opt/bagel/roles/hello.lua:
log.Info("Hello, World!")

change, err = apt.Package({
    name = "sl",
})

util.StopIfErr("Unable to install sl", err)
  1. Run Bagel:
$ bagel deploy

Documentation

See the docs directory.

You can also check out the acceptance tests for examples.

Why??

Same as always: to scratch an itch and create something that didn't exist before.

Building from Source

$ go get -u github.com/jtopjian/bagel/...
$ cd $GOPATH/src/github.com/jtopjian/bagel
$ make build
# or
$ make install

About

A configuration management system written in Go and Lua

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published