Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
-
Upload
daisuke-ikeda -
Category
Technology
-
view
403 -
download
0
Transcript of Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-
Serverspecを自分好みにアレンジスクリーンショットで証跡保存を撲滅
TIS株式会社池田 大輔
2017.3.31
Hello!I am Daisuke IKEDA
You can find me at @ike_dai
2
こんなことをなくしたい
3
Bad...
4
$ ps Excel.. $ rpm -qa Excel.. $ ss Excel.. $ ip addr ・・・
No. テスト項目 結果 担当者 日付
001 プロセスが起動していること OK 池田 2016.3.10
002 ポートがリッスンしていること OK 池田 2016.3.10
003xxパッケージがインストールされていること
NG 池田 2016.3.10
Bad...
5
スクリーンショットでエビデンス保存
極力Serverspecで自動化できないか?
6
Resource Type
テスト対象のリソース指定
fileportpackagecommandserviceなど
その他、Resource Typeはこちら http://serverspec.org/resource_types.html
7
describe package(package) do it { should be_installed }end
Matcher
どうあるべきかの定義
filebe_file: 指定したパスがファイルであるべきbe_directory:指定したパスがディレクトリであるべきcontent match: ファイルの中身に指定した文字列が含まれているべき
portbe_listening: 指定したポートがリッスン状態であるべき
servicebe_enabled : 起動設定が有効になっているべきbe_running: 起動しているべき
packagebe_installed: インストールされているべき
など8
describe package(package) do it { should be_installed }end
この枠組に乗っかれば
自分好みにアレンジ可能なはず!!
9
リソースタイプ「Command」
任意のコマンドの実行結果をテスト
10
describe command(‘ls -la’) do its(:stdout) { should match /hoge }end
いろんなことに活用できるので便利
もっと複雑なことをするには厳しい
11
Resource Typeを自分で作ってしまう
12
リソースタイプ「ZabbixConfig」
OSSの監視ツール「Zabbix」の監視設定状況を
テストするリソースタイプ
13
Serverspec実行元
ZabbixZabbix APIをcallして確認
リソースタイプ「ZabbixConfig」-仕様-
14
・ホストが設定されていることの確認
・ホストにテンプレートが割り当てられていることの確認
・ホストの監視先インタフェース設定が正しいことの確認
・ホストの監視設定が有効化どうかの確認
describe zabbix_config(‘server-01’) do it { should be_host } it { should have_template “Template OS Linux”} it { should have_interface ({ :ip => "10.2.2.2" }) } it { should be_valid }end
リソースタイプ「ZabbixConfig」-仕様-
15
・ホストに割り当てられている特定の監視項目が有効であることの確認
・ホストに割り当てられているすべての監視項目が有効であることの確認
describe zabbix_config(‘server-01’) do its(:item_state) { should be_normal.with_itemkey(‘agent.ping’) } its(:all_item_state) { should_not include "not supported" }end
リソースタイプ「ZabbixConfig」-仕様-
16
他にも ・ホストグループの存在確認
・マクロの設定の確認
・テンプレートの存在確認
・障害検知トリガーの設定確認
最低限よく使う設定系の処理は実装済み
ZabbixConfigを使うには?
17
①zabbixapiというRubygemsパッケージの導入が必要
$ gem install zabbixapi
②カスタマイズに必要なファイルを配置 コードはここから(https://github.com/ike-dai/serverspec/tree/zabbix)
・lib/serverspec/matcher/be_normal.rb
・lib/serverspec/matcher/be_valid.rb
・lib/serverspec/type/zabbix_config.rb
・lib/serverspec/helper/type.rb
・lib/serverspec/matcher.rb
・lib/serverspec/matcher/be_enabled.rb
③環境変数に実行先のZabbixの情報登録 ZABBIX_URL,ZABBIX_USER,ZABBIX_PASS
【3ファイル追加】
【3ファイル置換】
Serverspecって本来こういうことするもの?
18
サービス利用やサーバレスによる運用など、
インフラエンジニアの構築対象は
単なるサーバから色々と変わってきているので、、
こんな用途での活用もありかも??
19
構築を自動化するならあえて
Serverspecのテストの必要性って・・・?
20
Ansible等でのコード
パッケージ「zabbix-server-mysql」が導入されていること
実際は zabbix-server-mysqlパッケージに依存する多数が。。。
▶期待した状態になっているかはServerspecの出番
21
手段はどうあれ、確実な運用実現に
テストは欠かせない
極力手間をかけずに効率よく実現を
Conclusion
22
Thanks!Happy Premium-Friday!
You can find me at @ike_dai
23