Goss
メモ・感想
とりあえずつかってみたメモ
複雑なテストは実施していないがLAMP構成等単純な構成や簡易な作りのサーバを立てた際のテストには非常に便利そう
autoaddやaddコマンドで簡単にテストが作れる
現在の設定を元にテストケースの生成をしてくれるので構築しつつテストケース作成が容易
ファイルの中に含まれる文字列の検索やコマンドの結果も取れるのでちゃんと作れば複雑なこともできそう
exportを使用すれば一覧できるため内容確認が容易
Gossとは
YAMLから読み込みの出来るserverspec的なテストツール
こちらのリポジトリを参照
今回の環境
- AmazonLinux
- テスト用にhttpdを導入
導入
# curl -fsSL https://goss.rocks/install | sh
Downloading https://github.com/aelsabbahy/goss/releases/download/v0.3.1/goss-linux-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 589 0 589 0 0 977 0 --:--:-- --:--:-- --:--:-- 978
100 7791k 100 7791k 0 0 711k 0 0:00:10 0:00:10 --:--:-- 1256k
Goss v0.3.1 has been installed to /usr/local/bin/goss
goss --version
goss version v0.3.1
Downloading https://raw.githubusercontent.com/aelsabbahy/goss/master/extras/dgoss/dgoss
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2241 100 2241 0 0 7892 0 --:--:-- --:--:-- --:--:-- 7918
dgoss master has been installed to /usr/local/bin/dgoss
# goss --version (-vでも可)
goss version v0.3.1
テストファイル作成
サンプルではsshdを使用しているが差分を見やすくするためにhttpdを使用
1. httpdが導入済み、停止中・自動起動なしの環境
# chkconfig httpd --list
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# service httpd status
httpd is stopped
# goss autoadd httpd
Adding Package to './goss.yaml':
httpd:
installed: true
versions:
- 2.2.31
Adding Service to './goss.yaml':
httpd:
enabled: false
running: false
2. httpdが導入済み、起動中・自動起動有りの環境
# chkconfig httpd --list
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service httpd status
httpd (pid 2836) is running...
# goss autoadd httpd
Adding Package to './goss.yaml':
httpd:
installed: true
versions:
- 2.2.31
Adding Process to './goss.yaml':
httpd:
running: true
Adding Port to './goss.yaml':
tcp6:80:
listening: true
ip:
- '::'
Adding Service to './goss.yaml':
httpd:
enabled: true
running: true
上記のように現在の状態が追加される
autoaddを使用すれば自動的に指定したリソースに合わせて色々とテストケースを出力してくれる
簡易的なものに関しては autoadd
や add
を使用してテストケースを作れる
使用可能なリソースタイプはドキュメントを参照
単一のテストケースを使用する場合は下記のように add
を指定すれば良い
こちらも使用できるリソースタイプは決まっているので注意
# goss add service httpd
Adding Service to './goss.yaml':
httpd:
enabled: false
running: false
# goss add file /tmp/sample.txt
Adding File to './goss.yaml':
/tmp/sample.txt:
exists: true
mode: "0644"
size: 0
owner: root
group: root
filetype: file
contains: []
# goss add command "ls /tmp"
Adding Command to './goss.yaml':
ls /tmp:
exit-status: 0
stdout:
- sample.txt
stderr: []
timeout: 10000
使用例
# goss validate
....
Total Duration: 0.004s
Count: 4, Failed: 0, Skipped: 0
# goss -g ./goss-httpd.yaml validate
....
Total Duration: 0.036s
Count: 4, Failed: 0, Skipped: 0
ファイルの指定がない場合はデフォルトのgoss.yamlが読み込まれる
特定のファイルを使用したい場合は -g/--gossfile
でファイルを指定する