本記事はgoss advent calender 2019参加記事です。
通常のセットアップは一行
curl -fsSL https://goss.rocks/install | sh
(https://github.com/aelsabbahy/goss)
またgoss開発元のシェルを使わずに手動インストールする場合は以下
curl -L https://github.com/aelsabbahy/goss/releases/download/_VERSION_/goss-linux-amd64 -o /usr/local/bin/goss
chmod +rx /usr/local/bin/goss
基本的にバイナリ一つで動く
インストールとして/usr/local/binに配置しようとしていますが、これも必須ではなく
ダウンロードしたバイナリに実行権限さえ付けて起動すればgossは実行可能です。
そのため、/tmpなどにテストシナリオのYAMLファイルと一緒に配置してテストを実行し
終わったら消すといった運用も可能です。
筆者は全て試しているわけではありませんが、主にRHEL系のOSでは何も依存ライブラリやパッケージ等を必要としないでgossは動いているのは確認しています。
(恐らくDebian、ubuntuでも同じです)
また設定ファイル等は持たず、DBとの連動もありません。非常にシンプルです。
なぜバイナリ一つで動くのか
ここからは幾分推測混じりです。
公式のSourceを見れば一目瞭然ですがgossはGoで書かれています。
(https://github.com/aelsabbahy/goss)
そのため必要な機能は全てバイナリにビルド済みの状態で提供されます。
この辺りは10数個ほどgemを使って動くRubyで書かれたserverspecと異なる点です。
またバイナリ一つの収めたのはgoss作者がシンプルさを追求してそのようにしたのではないか?と筆者は考えています。
別途configファイルを用意したり、他のソフトと連動させると便利にはなる反面セットアップが複雑化し、導入を断念されたりそれに関する問い合わせが増えるためです。
もちろん手厚くマニュアルを書く、というのも良いのですが、読まなくてもわかるというのはそういったベクトルと逆の方向の親切さだと思います。
gossを周りに勧める理由の一つでもあります。