Goiardi 0.5.0 released, now with MySQL support

There’s a new version of goiardi, a chef server implemented in Go, out that
adds support for MySQL as a backend. It can either run in-memory, like
chef-zero (optionally freezing its data and index to save files), or use
MySQL.

Behavior-wise, it’s quite close to official chef server now. Assuming
authentication is enabled, it passes all the important chef-pedant tests.
There are a few areas where chef server and goiardi differ because of
differences in how authentication is handled, how the depsolver runs (chef
server chugs along finding all the inconsistencies, while goiardi
immediately throws its hands up at the first problem), and some cookbook
behavior where chef-pedant expects to have an empty array persist. These
differences do not seem to affect how knife and chef-client run, however.

If your so inclined, it works fine with chef-webui as well. It wouldn’t
cluster well at this time, however, because the search and indexing
functionality is inside goiardi - search and indexing would need to be
moved to a separate process, or else the goiardi processes would need to
communicate with each other to share updates.

Plans are afoot to improve it further; a few folks have asked about
postgres support, and I have a list of issues to address to address to make
it better. Right now, though, it works fine, and it’s seeing some use for
testing other software.

Goiardi can be found at https://github.com/ctdk/goiardi, and the README and
godocs explain how to set it up and run it. Installation and running it is
pretty straightforward, but does require installing go (and possibly MySQL)

  • there aren’t any binaries or packages available at this time.

Happy agitating, in a stormy fashion,

-j

Can I just say, I think this is completely awesome. The idea that we have a
common publishing platform (the chef server api) with lots of
implementations is just ridiculously healthy as a community. So cool.

Keep up the good work, Jeremy!

Adam

On Fri, May 2, 2014 at 1:10 PM, Jeremy Bingham jbingham@gmail.com wrote:

There's a new version of goiardi, a chef server implemented in Go, out
that adds support for MySQL as a backend. It can either run in-memory, like
chef-zero (optionally freezing its data and index to save files), or use
MySQL.

Behavior-wise, it's quite close to official chef server now. Assuming
authentication is enabled, it passes all the important chef-pedant tests.
There are a few areas where chef server and goiardi differ because of
differences in how authentication is handled, how the depsolver runs (chef
server chugs along finding all the inconsistencies, while goiardi
immediately throws its hands up at the first problem), and some cookbook
behavior where chef-pedant expects to have an empty array persist. These
differences do not seem to affect how knife and chef-client run, however.

If your so inclined, it works fine with chef-webui as well. It wouldn't
cluster well at this time, however, because the search and indexing
functionality is inside goiardi - search and indexing would need to be
moved to a separate process, or else the goiardi processes would need to
communicate with each other to share updates.

Plans are afoot to improve it further; a few folks have asked about
postgres support, and I have a list of issues to address to address to make
it better. Right now, though, it works fine, and it's seeing some use for
testing other software.

Goiardi can be found at GitHub - ctdk/goiardi: A Chef server written in Go, able to run entirely in memory, with optional persistence with saving the in-memory data to disk or using MySQL or Postgres as the data storage backend. Docs: http://goiardi.readthedocs.io/en/latest/index.html, and the README
and godocs explain how to set it up and run it. Installation and running it
is pretty straightforward, but does require installing go (and possibly
MySQL) - there aren't any binaries or packages available at this time.

Happy agitating, in a stormy fashion,

-j

--
Opscode, Inc.
Adam Jacob, Chief Dev Officer
T: (206) 619-7151 E: adam@opscode.com

Thanks, although I'm a bit mortified since I just noticed that I wrote "If
your so inclined". I plead a little bit of trouble typing today.

One thing I forgot to mention here too is that it should run on any
platform go supports. I develop it on Mac OS X, have tested it on various
Linuxes and FreeBSD 9.2, probably works with plan9, and it might work on
Windows (haven't tried yet though).

It builds with gccgo with the 'go' command on Arch Linux, at least, but I
haven't gotten it to build with gccgo on illumos without the 'go' command.
Word on the street is that go 1.3 will support the various Solaris-derived
OSes though. VMS support is not likely in the cards though, I'm afraid
(although if it ever gets buildable with gccgo on platforms the main go
doesn't support I guess it might conceivably work).

-j

On Fri, May 2, 2014 at 2:12 PM, Adam Jacob adam@opscode.com wrote:

Can I just say, I think this is completely awesome. The idea that we have
a common publishing platform (the chef server api) with lots of
implementations is just ridiculously healthy as a community. So cool.

Keep up the good work, Jeremy!

Adam

On Fri, May 2, 2014 at 1:10 PM, Jeremy Bingham jbingham@gmail.com wrote:

There's a new version of goiardi, a chef server implemented in Go, out
that adds support for MySQL as a backend. It can either run in-memory, like
chef-zero (optionally freezing its data and index to save files), or use
MySQL.

Behavior-wise, it's quite close to official chef server now. Assuming
authentication is enabled, it passes all the important chef-pedant tests.
There are a few areas where chef server and goiardi differ because of
differences in how authentication is handled, how the depsolver runs (chef
server chugs along finding all the inconsistencies, while goiardi
immediately throws its hands up at the first problem), and some cookbook
behavior where chef-pedant expects to have an empty array persist. These
differences do not seem to affect how knife and chef-client run, however.

If your so inclined, it works fine with chef-webui as well. It wouldn't
cluster well at this time, however, because the search and indexing
functionality is inside goiardi - search and indexing would need to be
moved to a separate process, or else the goiardi processes would need to
communicate with each other to share updates.

Plans are afoot to improve it further; a few folks have asked about
postgres support, and I have a list of issues to address to address to make
it better. Right now, though, it works fine, and it's seeing some use for
testing other software.

Goiardi can be found at GitHub - ctdk/goiardi: A Chef server written in Go, able to run entirely in memory, with optional persistence with saving the in-memory data to disk or using MySQL or Postgres as the data storage backend. Docs: http://goiardi.readthedocs.io/en/latest/index.html, and the README
and godocs explain how to set it up and run it. Installation and running it
is pretty straightforward, but does require installing go (and possibly
MySQL) - there aren't any binaries or packages available at this time.

Happy agitating, in a stormy fashion,

-j

--
Opscode, Inc.
Adam Jacob, Chief Dev Officer
T: (206) 619-7151 E: adam@opscode.com