• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,686
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
28
Comments
0
Likes
18

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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. おしまい