goss って何?
簡単に言うと goss は serverspec みたいな感じのサーバーなどの設定をテスト/検証するツールです。YAML でテストすることを書いて実行するだけで、簡単にサーバーのテスト/検証ができます。また現在のサーバーの状態を元にテスト項目を生成することができます。
以下の動画を見て頂ければどんなものかが簡単にわかると思います。
インストールしてみよう
https://github.com/aelsabbahy/goss/releases からバイナリをダウンロードしてきてパスの通っている場所に置くだけです。(現在、Linux 向けのバイナリのみ)
もしくは以下のように実行して設置します。(64bit 環境の場合)
$ GOSS_VER=v0.3.4 && sudo -E curl -L https://github.com/aelsabbahy/goss/releases/download/$GOSS_VER/goss-linux-amd64 -o /usr/local/bin/goss
$ sudo chmod +rx /usr/local/bin/goss
ちなみに dgoss っていうファイルは docker 環境下で goss を簡単に手早く使うためのラッパーだそうです。別の機会に説明します。
使ってみよう
テストするために YAML ファイルをバリバリと書くのもいいんですが、goss には自動でテスト項目を生成してくれるコマンドがあるので、まずはそれを使って YAML を生成してみます。
$ goss -g sshd_goss.yaml autoadd sshd
と実行すると以下のような内容が出力されます。
Adding Process to 'sshd_goss.yaml':
sshd:
running: true
Adding Service to 'sshd_goss.yaml':
sshd:
enabled: true
running: true
Adding User to 'sshd_goss.yaml':
sshd:
exists: true
uid: 122
gid: 65534
groups:
- nogroup
home: /var/run/sshd
shell: /usr/sbin/nologin
なお、同じような内容の YAML が -g オプションで指定したファイルに出力されます。
$ cat sshd_goss.yaml
service:
sshd:
enabled: true
running: true
user:
sshd:
exists: true
uid: 122
gid: 65534
groups:
- nogroup
home: /var/run/sshd
shell: /usr/sbin/nologin
process:
sshd:
running: true
この出力された YAML ファイルを使ってテストを実施するには以下のように実行します。
$ goss -g sshd_goss.yaml validate
.........
Total Duration: 0.017s
Count: 9, Failed: 0, Skipped: 0
テストにかかった時間とテスト結果が出力されます。
他のオプションについては追い追い追記していきます。