Serverspec at July Tech Festa 2013
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Serverspec at July Tech Festa 2013

on

  • 3,749 views

 

Statistics

Views

Total Views
3,749
Views on SlideShare
3,252
Embed Views
497

Actions

Likes
18
Downloads
27
Comments
0

6 Embeds 497

http://koudaiii.hatenablog.com 152
https://twitter.com 131
http://a3no.hatenablog.com 117
http://kidatti.livedoor.biz 90
http://blog.hatena.ne.jp 6
http://tweetedtimes.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Serverspec at July Tech Festa 2013 Presentation Transcript

  • 1. July Tech Festa 2013 2013/07/14 Gosuke Miyashita
  • 2. サーバ プロビジョニン グ
  • 3. Cloud or VM Image Launch OS Install System Configuration Provisioning Toolchain by Lee Thompson at Velocity 2010 Application Service Orchestration Bootstrapping Configuration Orchestration Capistrano Fabric Puppet Chef EC2 OpenStack
  • 4. サーバ プロビジョニン グ とテスト
  • 5. 監視とは継続的 なテストである by @kazuho
  • 6. Cloud or VM Image Launch OS Install System Configuration Application Service Orchestration Bootstrapping Configuration Orchestration Nagios Zabbix serverspec ???
  • 7. Zabbix/NagiosによるApacheの テスト(監視) httpdプロセスが動いているか 80番ポートに外からアクセスでき るか 80番ポートが正しいレスポンスを 返すか
  • 8. serverspecによるApacheのテス ト httpdプロセスが動いているか 80番ポートをListenしているか httpdパッケージが入っているか 自動起動するようになっているか 設定ファイルが存在するか 正しい設定がされているか
  • 9. Orchestration領域のテス ト Zabbix Nagios Configuration領域のテス ト serverspec
  • 10. Configuration領域に おけるテスト
  • 11. みなさん どうやってますか?
  • 12. シェルコマンド叩 く? シェルスクリプト? 実際にサービスに アクセスする?
  • 13. Configuration Management Framework
  • 14. Configuration Management Framework とテスト
  • 15. これはテスト どうやってますか?
  • 16. シェルコマンド叩 く? シェルスクリプト? 実際にサービスに アクセスする?
  • 17. この界隈は様々な テストツールが存在
  • 18. シンタックスチェック Foodcritic knife cookbook test puppet-lint
  • 19. ユニットテスト Chefspec rspec-puppet
  • 20. require 'chefspec' describe 'http_server::default' do let (:chef_run) { ChefSpec::ChefRunner.new.converge 'http_server::default‘ } it 'should install nginx' do expect(chef_run).to install_package 'nginx' end it 'should start nginx' do expect(chef_run).to start_service 'nginx' end end
  • 21. 結合テスト Minitest Chef Handler Cucumber Chef Test Kitchen rspec-system serverspec
  • 22. class TestNginx < MiniTest::Chef::TestCase def test_package_is_installed assert_installed package("nginx") end def test_service_is_running assert_running service("nginx") end end
  • 23. Infrastructure as Code からの自然な流れ
  • 24. サーバの状態を コードで記述 ↓ 状態のテストも コードで記述
  • 25. serverspecは この流れの中で 生まれたもの
  • 26. severspecとは
  • 27. サーバの状態を簡潔な コードで記述して テストするための仕組 み
  • 28. サーバの状態を RSpecで記述
  • 29. RSpec?
  • 30. Rubyのテスト フレームワーク
  • 31. describe Array, "when empty" do before do @empty_array = [] end it "should be empty" do expect(@empty_array).to be_empty end it "should size 0" do expect(@empty_array.size).to eq 0 end end
  • 32. serverspecに よるテスト
  • 33. describe package('httpd') do it { should be_installed } end describe service('httpd') do it { should be_enabled } it { should be_running } end describe port(80) do it { should be_listening } end
  • 34. 基本的に シェルコマンド叩い て チェックしてるだけ
  • 35. テスト対象のサーバ にSSHで接続して コマンドを叩く
  • 36. シェルコマンド実行 によるサーバのテス トをスマートにやれ るようにしたのが serverspec
  • 37. serverspecの 始め方
  • 38. # yum install rubygems # gem install serverspec rake # serverspec-init # rake spec
  • 39. デモ
  • 40. 詳細は http://serverspec.org/
  • 41. serverspec をつくった理由
  • 42. PuppetやChef 使っていてそもそも serverspecって必要?
  • 43. そもそも PuppetやChefに テストって必要?
  • 44. レシピやマニフェスト が正しく書けたかどう か 必ずテストしますよ ね?
  • 45. 一度書いたマニフェス トやレシピを更新しな いのであればそれほど 必要ではないかも
  • 46. マニフェストやレシ ピを継続的に更新す る なら必要性が高まる
  • 47. プログラムの リファクタリングと 一緒
  • 48. 様々なテストツール が存在するのになぜ わざわざserverspecを つくったのか?
  • 49. 既存ツールは機能が 多すぎたり、特定の ツールに依存してた りするのがイヤ
  • 50. serverspecの特徴
  • 51. マニフェストを継続 的に更新するなら テストコードも 継続的な更新が必要
  • 52. なのでテストコード の読みやすさや 書きやすさも重要
  • 53. テストツール自体の シンプルさも重要
  • 54. ChefやPuppetに 依存しない
  • 55. テスト対象のサーバ にエージェント不要
  • 56. テスト対象のサーバ にRubyすら不要
  • 57. テスト以外の余計な 機能がない
  • 58. 利用のための 敷居が低い
  • 59. テストはシェルコマ ンドを実行してるだ け
  • 60. 問題が起きたときに 調査しやすい
  • 61. serverspecの応用
  • 62. サーバ構築の継続的 インテグレーション
  • 63. Puppetマニフェストを 更新したら自動でマニ フェスト適用と serverspecによるテス トを実行
  • 64. まとめ
  • 65. シェルコマンド実行 によるサーバのテス トをスマートにやれ るようにしたのが serverspec
  • 66. 読みやすい 書きやすい わかりやすい
  • 67. 要するに 簡潔
  • 68. 簡潔さ超重要
  • 69. ビジネス要件は 絶えず変化する
  • 70. それに伴いシステム も変化し複雑に
  • 71. 複雑さと変化に対応 するためには継続的 なテスト重要
  • 72. テストコード自体も システムに伴い 変化し複雑になる
  • 73. なのでできるだけ 簡潔に記述しテスト できることが重要
  • 74. serverspecとは
  • 75. 現実のシステムの 複雑さと変化に 対応するために
  • 76. システムのあるべき 状態を簡潔に記述し 継続的にテストする ためのもの
  • 77. おまけ
  • 78. miyagawa podcast ep14 でserverspecについて 話してます
  • 79. おしまい