Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-

2,498 views

Published on

2017/3/31 Tech-Cirlce Itamae&Serverspecの会でのLT資料。

Published in: Technology
  • Be the first to comment

Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅-

  1. 1. Serverspecを自分好みにアレンジ スクリーンショットで証跡保存を撲滅 TIS株式会社 池田 大輔 2017.3.31
  2. 2. Hello! I am Daisuke IKEDA You can find me at @ike_dai 2
  3. 3. こんなことをなくしたい 3
  4. 4. Bad... 4 $ ps Excel.. $ rpm -qa Excel.. $ ss Excel.. $ ip addr ・・・ No. テスト項目 結果 担当者 日付 001 プロセスが起動していること OK 池田 2016.3.10 002 ポートがリッスンしていること OK 池田 2016.3.10 003 xxパッケージがインストールされている こと NG 池田 2016.3.10
  5. 5. Bad... 5 スクリーンショットでエビデンス保存
  6. 6. 極力Serverspecで 自動化できないか? 6
  7. 7. Resource Type テスト対象のリソース指定 file port package command service など その他、Resource Typeはこちら  http://serverspec.org/resource_types.html 7 describe package(package) do it { should be_installed } end
  8. 8. Matcher どうあるべきかの定義 file be_file: 指定したパスがファイルであるべき be_directory:指定したパスがディレクトリであるべき content match: ファイルの中身に指定した文字列が含まれているべき port be_listening: 指定したポートがリッスン状態であるべき service be_enabled : 起動設定が有効になっているべき be_running: 起動しているべき package be_installed: インストールされているべき など 8 describe package(package) do it { should be_installed } end
  9. 9. この枠組に乗っかれば 自分好みにアレンジ可能なはず!! 9
  10. 10. リソースタイプ「Command」 任意のコマンドの実行結果をテスト 10 describe command(‘ls -la’) do its(:stdout) { should match /hoge } end いろんなことに活用できるので便利
  11. 11. もっと複雑なことをするには厳しい 11
  12. 12. Resource Typeを 自分で作ってしまう 12
  13. 13. リソースタイプ「ZabbixConfig」 OSSの監視ツール「Zabbix」の監視設定状況を テストするリソースタイプ 13 Serverspec実行元 Zabbix Zabbix APIをcallして確認
  14. 14. リソースタイプ「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
  15. 15. リソースタイプ「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
  16. 16. リソースタイプ「ZabbixConfig」-仕様- 16 他にも  ・ホストグループの存在確認  ・マクロの設定の確認  ・テンプレートの存在確認  ・障害検知トリガーの設定確認 最低限よく使う設定系の処理は実装済み
  17. 17. 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ファイル置換】
  18. 18. Serverspecって本来こういうことするもの? 18
  19. 19. サービス利用やサーバレスによる運用など、 インフラエンジニアの構築対象は 単なるサーバから色々と変わってきているので、、 こんな用途での活用もありかも?? 19
  20. 20. 構築を自動化するならあえて Serverspecのテストの必要性って・・・? 20
  21. 21. Ansible等でのコード  パッケージ「zabbix-server-mysql」が導入されていること 実際は  zabbix-server-mysqlパッケージに依存する多数が。。。  ▶期待した状態になっているかはServerspecの出番 21
  22. 22. 手段はどうあれ、確実な運用実現に テストは欠かせない 極力手間をかけずに効率よく実現を Conclusion 22
  23. 23. Thanks! Happy Premium-Friday! You can find me at @ike_dai 23

×