まずgossでテストを実行する前に、テスト項目を作成する必要がある。
テストシナリオ作成第一歩
最もお手軽且つ個人的に最初に実行するのはgoss autoaddサブコマンドである。
前提としてgossは/usr/local/bin
にインストールされ、PATHが通っているものとする
goss autoadd [サービス名やユーザ名など]
[サービス名やユーザ名など]にはSystemdに登録されているservice名などを入力する。
すると、対象のサービスのSystemd上の状況(enable/disableやrunning/stoppedなど)の現在の状態を正とするテストシナリオをカレントディレクトリのgoss.yamlに出力する。
さらに対象サービスの実行ユーザの/etc/passwd上に載っているUIDやGIDなど、プロセスのステータス、ポートのListen状態などを現在の状態を正としてgoss.yamlに出力する。
またユーザ名を指定すれば、そのユーザが所属しているGroupに関する内容も引っ張ってきてテストシナリオとしてgoss.yamlに出力する。
さらにテストを作成する
この後もさらに goss autoadd keyword
でテストを作成していくが
既にテストシナリオファイルがあると、上書きにならずどんどんテストシナリオを追記していく。
例えば
goss autoadd httpd
goss autoadd mariadb
と実行すると
goss.yamlにhttpdとmariadbのテストが両方書かれた状態となる。
後述するaddサブコマンドでのテスト追加でも同様です。
テストシナリオをファイル出力する際に、既にファイルがあれば一度読み込んでautoaddやaddの内容を追加した上で項目を並べなおしてファイル出力するようです。
ソース読めば確実にわかりますよ!
ただしこれはデメリットも一部ある(後述)ので注意は必要です。
この仕様のため、とりあえずautoaddでザクザクと実行するだけでざっくりとしたテストシナリオは出来上がります。
出力ファイル名を変える
テストシナリオファイル名は-gオプションで変更可能です。
goss -g WebServer.yaml autoadd httpd
またとりあえずデフォルトのgoss.yamlで出力しておいて、mvでファイル名を変更した後に
-gで変更後ファイル名にしてもちゃんと追記してくれます。
goss autoadd httpd
mv goss.yaml WebServer.yaml
goss -g autoadd mariadb
個人的には残していくテストシナリオファイル名は-gで何らかgoss.yaml以外のファイル名を付け、goss.yamlは試しで作成したテストや動作確認用として使うようにしています。
長くなってきたので続きはその2へ