Gossは構築したサーバーの構成や設定が正しいかを、すばやく簡単に確認できるツールです。
Goss – Quick and Easy server validation
https://github.com/aelsabbahy/goss
同様のツールにServerspecがありますが、GossはYAMLでテスト項目を設定します。
今回はGossの基本的な使い方を紹介します。
目次
1. 基本的な使い方
goss [global options] command [commnad options] [arguments]...
GLOBAL OPTIONS
-g gossfile | 読込みおよび書込みを行うgossファイルのパスを指定します。デフォルトでは、./goss.yamlを参照します。 |
–vars value | テンプレート用の値を格納したファイルを指定します。 |
–package value | パッケージの種類を指定します。apk, deb, pacman, rpmを指定できます。 |
-h | ヘルプメッセージを表示します。 |
-v | バージョンを表示します。 |
COMMAND
add | 1つのテスト項目を追加します。 |
autoadd | 自動的に復数のテスト項目を追加します。 |
render | 分割して記述されたgossファイルをまとめて(整形して)出力します。 |
serve | テストのhttpエンドポイントとして動作します。 |
validate | システムのチェックを行います。 |
2. テスト項目の作成
テスト項目の作成から実行までを行ってみます。今回は/tmp/gosstest.txtというファイルを用意して、このファイルの状態を確認してみます。
$ cat /tmp/gosstest.txt
gossgossgoss
gossgossgoss
gossgossgoss
はじめにaddコマンドもしくはautoaddコマンドでテスト項目の雛形を作成します。
$ goss autoadd /tmp/gosstest.txt
Adding File to './goss.yaml':
/tmp/gosstest.txt:
exists: true
mode: "0664"
size: 39
owner: XXXX
group: XXXX
filetype: file
contains: []
Fileリソースのテスト項目として以下の6つが自動設定されました。
- exists: true (ファイルが存在すること)
- mode: “0664” (ファイルのパーミッションが”0664″であること)
- size: 39 (ファイルのサイズが39バイトであること)
- owner: XXXX (ファイルのオーナーがXXXXであること)
- group: XXXX (ファイルのグループがXXXXであること)
- filetype: file (ファイルタイプがファイルであること)
3. テスト項目の修正
作成されたgossファイルをテスト要件に応じて修正やテンプレート化を行います。gossファイルはYAML形式のテキストファイルとなっているので、任意のテキストエディタなどで修正、追加ができます。
今回は自動作成されたgossファイルをそのまま利用するので、gossファイルの修正は行いません。
4. テストの実行
validateコマンドでテストを実行します。
$ goss validate
......
Total Duration: 0.000s
Count: 6, Failed: 0, Skipped: 0
全てのテスト項目が成功したようです。失敗状態を確認するために、テスト対象のファイルを削除して実行してみます。
$ rm /tmp/gosstest.txt
$ goss validate
FSSSSS
Failures/Skipped:
File: /tmp/gosstest.txt: exists:
Expected
<bool>: false
to equal
<bool>: true
File: /tmp/gosstest.txt: mode: skipped
File: /tmp/gosstest.txt: owner: skipped
File: /tmp/gosstest.txt: group: skipped
File: /tmp/gosstest.txt: filetype: skipped
File: /tmp/gosstest.txt: size: skipped
Total Duration: 0.001s
Count: 6, Failed: 1, Skipped: 5
最初のファイル存在テスト(exists)に失敗しました。以降のテスト(mode, owner, group, filetype, size)はスキップされます。
以上、Gossの基本的な使い方の紹介でした。