
Babushka – Test-Driven Sysadmin - nikolay
http://babushka.me/
======
mapleoin
This is presented as revolutionary somehow, but it's just a stripped-down
(early version?) of what the other configuration management tools do: e.g.
Chef, puppet, ansible.

~~~
CraigJPerry
Yeah i agree. Although I still haven't found a test framework I like for this
so any pointers appreciated!

I tried it all ansible based: [https://github.com/CraigJPerry/ansible-
users/tree/test-cases...](https://github.com/CraigJPerry/ansible-
users/tree/test-cases-as-documentation/tests)

I tried it using Python's unittest2 module:
[https://github.com/CraigJPerry/home-
network/blob/v0.1.5/test...](https://github.com/CraigJPerry/home-
network/blob/v0.1.5/tests/)

I like the idea that ansible playbooks should be self testing.

~~~
falcolas
I'm working from a memory of a podcast, so pull out those pinches of salt:
Chef offers a testing suite - it basically offers a running mode which does an
audit of what current conforms to the recipes you've passed it, and outputs a
list of actions it would take to remedy this.

Combined with VMs, this lets you do some basic automated testing to ensure
that your script is doing what you intend it to do.

I could swear that they also some kind of automated validation against an
"inventory", which would make it possible to do automated tests against a
known, unchanging target, but at this point I'm probably mis-remembering. They
may have just advocated using VMs, images, and audits as validation.

------
awinter-py
a step in the right direction (mockable infrastructure). nice work.

~~~
nikolay
By the way, some guy tried to implement it in pure Bash once [0].

[0]: [https://github.com/richo/babashka](https://github.com/richo/babashka)

~~~
errnoh
There's also Marelle [0], written in SWI-Prolog.

[0]:
[http://larsyencken.github.io/marelle/](http://larsyencken.github.io/marelle/)

~~~
nikolay
Thanks for reminding me about Marelle! I was really excited about it back
then, but then, due to the Prolog dependency, I got a bit more practical.

------
fisle
Sysadmin tool suggests installing itself with sh & curl combo? This makes me
suspicious of the tool itself.

~~~
loudmax
I was thinking the same thing. As a grey haired sysadmin it's disconcerting to
see this blasé attitude toward executing local commands from a remote host.

In a practical sense, I'm not sure it's as bad as it looks. It is https. And
if you weren't going to read the source code, it's not really different from
downloading the program before executing it. In this case, its a small shell
script, so it's easy to glance through the code to make sure it isn't doing
anything sketchy. For large code bases, that isn't always feasible, so at some
point you have to simply trust the source, whether you install from a tarball
or (ugh) let a shell execute commands from a remote host.

Also, if you're the kind of sysadmin that fires up a VM or a container any
time you want to experiment with a new piece of software, you can afford to
take risks. At worst, they'll steal your public key.

It does seem like a bad habit. If you get used to sh+curl install legitimate
projects, it isn't such a stretch to sh+curl miscellaneous suggestions on
forums.

------
burke
I've borrowed this met?/meet API for another tool and found it to be a really
useful pattern.

------
visakanv
Love the name.

~~~
xentronium
Technically the toy is called matryoshka, babushka is Russian for grandmother.

~~~
guard-of-terra
I think they meant it. As in, a grandmother who is full of energy and can do a
dozen things before anybody is ever awake.

Always coming to the rescue of her grandchildren.

~~~
iamtew
They didn't:

> It’s true, babushka means “grandmother” in Russian. The thing is, here in
> Australia, “babushka doll” is the colloquial term for Russian nesting dolls.
> Deps are intended to be small, tidy chunks of code, nested within each other
> - hence the name.

Last paragraph: [http://babushka.me/overview](http://babushka.me/overview)

------
not_logan
I can't understand why the Babushka is better (or worse) than popular SCM,
such as puppet, chef or ansible?

~~~
lisivka
Compare it with Systemd instead of puppet: it is stripped down version of
Systemd.

