aelsabbahy
Show HN: Enhance any command with dynamic arguments
Tutorial: How to test your docker image in half a second [w/ video]
* Goss is self contained binary, no python/ruby needed
* Goss is YAML, not python/ruby DSL
* Goss can generate tests from system state using add/autoadd
* Goss can expose tests as a http health endpoint
* Goss can sleep/retry until a system is in a good state, this is useful in docker. See blog
* It runs extremely fast benchmark showing 1,000 tests running under 100ms
Some limitations:
* Goss has to run on the system locally, self-contained binary makes it simple to install.
* DSL will always have more flexibility in what you can do, but it's much simpler. So depends on what you're looking for.
Changes since my initial post:
* Goss is now primarily YAML based (was JSON originally)
* Goss supports golang's text/template to allow tests to be dynamic https://github.com/aelsabbahy/goss/blob/master/docs/manual.m...
* Goss can expose test results as a /healthz endpoint
* Goss can sleep/retry until system is in a passing state, useful for docker waits, see: (https://medium.com/@aelsabbahy/docker-1-12-kubernetes-simpli...)
* Many enhancements and bug fixes
Show HN: Goss 3.0: YAML, serverspec alternative now supports dynamic tests
Show HN: Miniswarm – Docker Swarm cluster in one command
Ask HN: What are the benefits of having a project webpage vs. GitHub README?
Aside from Google Analytics are there any other benefits to having a project webpage for an open source project?Are there any guides or statistics on the impact of having a webpage vs just a github repo?I'm artistically challenged, so I prefer to just have a README.md, but wondering if I'm missing out by not doing so? I'm currently at ~450 stars with just readme and an asciicast gif:...
Show HN: Miniswarm – Docker Swarm cluster in one command
Goss - Healthcheck and validate your containers with ease
Some tools out there:
* https://github.com/aelsabbahy/goss - YAML, simple, self-contained binary, extremely fast.
* https://github.com/indusbox/goss-ansible - Ansible module for goss, never used this, but you might find it useful
* http://serverspec.org/ - Ruby, most popular infra testing tool
* https://github.com/chef/inspec - Ruby, looks like an improved serverspec, almost same syntax, made by the chef guys
* https://github.com/philpep/testinfra - Python, don't know much about it, but mentioning it since Ansible is Python.
Spend a little bit of time experimenting with all of them, see which one you like.
Full disclosure: I'm the author of goss.
There's probably an opportunity to make this more generic by adding setter methods to the system_resources and extracting them out to their own repo. At that point it can be a shared library leveraged by goss and CM tools.. similar to how specinfra is used by serverspec and itamae.
The tool is intended to be a simple take on server validation. The idea is to be able to quickly define a system manifest and validate a system against it.
Differences from serverspec:
* 10-30x faster depending on test suite (tests are run in parallel)
* Can derive server state and generate a manifest from a running server
* goss is meant to be simple, albeit less flexible
* Uses JSON instead of DSL
* Manifests are static - no variables, conditionals, etc. If you need this, you should dynamically generate the JSON manifest.
* Being in Go, it's a self contained binary, no need for ruby
* Supports a much smaller set of OSes/test types
For more complicated workflows, the tool can be chained with other commands, ex:
curl http://url/to/static/or/dynamic/goss.json | goss validate