Movatterモバイル変換


[0]ホーム

URL:


Gosuke Miyashita, profile picture
Uploaded byGosuke Miyashita
PPTX, PDF13,157 views

Serverspec at hbstudy #45

Embed presentation

Downloaded 96 times
serverspechbstudy #452013/06/21Gosuke Miyashita
自己紹介
宮下 剛輔mizzy.org@gosukenator
paperboy&co.テクニカルマネージャー
理学部情報工学科の三年生
学割でGitHub Micro Plan無料です
Amazon Student入ってます
hbstudy #8Puppetのススメ
サーバプロビジョニング
Cloud or VMImageLaunchOSInstallSystemConfigurationProvisioning Toolchain by Lee Thompson at Velocity 2010Application ServiceOrchestrationBootstrappingConfigurationOrchestrationCapistranoFabricPuppetChefEC2OpenStack
サーバプロビジョニングとテスト
監視とは継続的なテストであるby @kazuho
Cloud or VMImageLaunchOSInstallSystemConfigurationApplication ServiceOrchestrationBootstrappingConfigurationOrchestrationNagiosZabbixserverspec???
Zabbix/NagiosによるApacheのテスト(監視)httpdプロセスが動いているか80番ポートに外からアクセスできるか80番ポートが正しいレスポンスを返すか
serverspecによるApacheのテストhttpdプロセスが動いているか80番ポートをListenしているかhttpdパッケージが入っているか自動起動するようになっているか設定ファイルが存在するか正しい設定がされているか
Orchestration領域のテストZabbixNagiosConfiguration領域のテストserverspec
Configurationとテスト
みなさんどうやってますか?
シェルコマンド叩く?シェルスクリプト?実際にサービスにアクセスする?
ConfigurationManagementFramework
ConfigurationManagement Frameworkとテスト
これはテストどうやってますか?
シェルコマンド叩く?シェルスクリプト?実際にサービスにアクセスする?
この界隈は様々なテストツールが存在
シンタックスチェックFoodcriticknife cookbook testpuppet-lint
ユニットテストChefspecrspec-puppet
結合テストMinitest Chef HandlerCucumber ChefTest Kitchenrspec-systemserverspec
Infrastructure as Codeからの自然な流れ
これだけテストツールが存在するのになぜわざわざserverspecをつくったのか?
既存ツールは機能が多すぎたり、特定のツールに依存してたりするのがイヤ
PuppetやChef使っていてそもそもserverspecって必要?
そもそもPuppetやChefにテストって必要?
一度書いたマニフェストやレシピを更新しないのであればたぶん不要
マニフェストやレシピを継続的に更新するなら必要
プログラムのリファクタリングと一緒
継続的に更新するならテストも継続的に実行する必要がある
なのでテストを自動化することが必要
テストコード自体もメンテナンスが必要
なのでテストコードの読みやすさや書きやすさも重要
テストツール自体のシンプルさも重要
severspec
サーバのテストを簡潔に書くための仕組み
サーバのテストをRSpecで記述
RSpec?
Rubyのテストフレームワーク
describe Array, "when empty" dobefore do@empty_array = []endit "should be empty" do@empty_array.should be_emptyendit "should size 0" do@empty_array.size.should == 0endend
@empty_array.should be_empty@empty_array.should_not be_empty
serverspecによるテスト
describe package('httpd') doit { should be_installed }enddescribe service('httpd') doit { should be_enabled }it { should be_running }enddescribe port(80) doit { should be_listening }end
最近推奨の書き方expect(file ‘/etc/passwd’).to be_file非推奨な書き方file(‘/etc/passwd’).should be_file
テストコードが簡単に書けて結果がわかりやすくても内部が複雑なら意味がない
serverspecは基本的にシェルコマンド叩いてチェックしてるだけ
テスト対象のサーバにSSHで接続してコマンドを叩く
シェルコマンド実行によるサーバのテストをスマートにやれるようにしたのがserverspec
serverspecの始め方
# yum install rubygems# gem install serverspec rake# serverspec-init# rake spec
デモ
serverspecが産まれた経緯
2007年
Puppetを導入することにした
Puppetでサーバ構築は自動化できた
じゃあテストはどうしよう?
AssurerというPerl製のツールを書いた
Assurerは面倒すぎて実用には耐えなかった
テスト駆動サーバ構築のことはしばらく忘れた
2013年
Puppetマニフェストのリファクタリングをやろうと思った
コードをリファクタリングするならテスト必要だろ
rspec-pupetはモジュールのテストにしか使えない
Puppet適用後の実際のサーバの状態をテストしたい
@hibomaが何かやってたそういえばhttp://d.hatena.ne.jp/hiboma/20130513/1368411746
それパクろうそしてgemにしよう
serverspec誕生
もう少し詳しいserverspecの話
リソースタイプ
command cron default_gatewayfile group host ipfilter ipnatiptables kernel_modulelinux_kernel_parrameter packageport routing_table selinuxservice user zfshttp://serverspec.org/resource_types.html
複数OSサポート
DebianGentooRed HatSolarisDarwin
rootユーザじゃない場合はsudoつけてコマンド実行(SSHの場合のみExec ではつけない)
PATHの追加設定できます
spec/spec_helper.rb でRSpec.configure do |c|c.path = ‘/sbin:/usr/sbin:$PATH’…end
describe package(‘serverspec') dolet(:path){‘/usr/local/rbenv/shims:$PATH’}it { should be_installed.by(‘gem’) }end
pre_command
describe package(‘serverspec') dolet(:path){‘/usr/local/rbenv/shims:$PATH’}let(:pre_command) {‘eval ‚$(rbenv init -)‛’}it { should be_installed.by(‘gem’) }end
サーバ単位じゃなくロール単位でのテスト
サーバ固有属性を扱う
詳しくはウェブでhttp://mizzy.org/http://serverspec.org/
インフラの継続的インテグレーション
プログラム内部の話
describe file(‘/etc/passwd’) doit { should be_file }endが実行されるとどうなるか(Exec Backend の場合)
この辺が主に呼ばれるserverspec/type/file.rbserverspec/backend/exec.rbserverspec/commands/redhat.rb実際にコードを見てみましょう
SSH の場合は?Backend::Exec の代わりに Backend::Sshが呼ばれる
chain する場合は?describe package('serverspec') doit { should be_installed.by('gem') }endmatchers/be_installed.rb が呼ばれる
serverspec自身のテスト
テストコードは2パターンコマンドのテストリソースマッチャのテスト
コマンドのテストserverspecがテストのために実行するシェルコマンドが正しく生成されるかどうかをチェック
リソースマッチャのテストテスト用シェルコマンドが実行されたという「仮定」の元で、リソースのテストが想定通りの結果
GitHub でのコントリビュート1. フォークする2. ブランチをつくるgit checkout –b my-new-feature3. コード書いてコミットしてプッシュgit push origin my-new-feature4. プルリクエストを送る
プルリクエストは日本語でOK途中状態でいったんプルリクしてくれてもOKあとからまたpushすればいいその場合は頭に[WIP]とつけてください動作確認は自分が使ってるOSだけでOK完璧に実装しなくて大丈夫ですテストコードも書いてもらえるとうれしいです書き方わからなければお気軽に相談を
プルリクエストはお気軽に
まとめ
serverspecは読みやすい書きやすいわかりやすい
要するに簡潔
簡潔さ超重要
ビジネス要件は絶えず変化する
それに伴いシステムも変化し複雑に
複雑さと変化に対応するためには継続的なテスト重要
テストコード自体もシステムに伴い変化し複雑になる
なのでできるだけ簡潔に記述できることが重要
serverspecとは
現実のシステムの複雑さと変化に対応するために
システムのあるべき状態を簡潔に記述し継続的にテストするためのもの
おまけ
おしまい

Recommended

PPTX
Goss入門
PDF
OpenWrtによるサイト間IPsec接続
PDF
OPNFVのコンポーネントと調べ方
PDF
OpenCenterによるOpenStack自動構築
PPT
Gaej Explorer
PPT
Webサーバの基礎知識【編集済み】
PDF
OPNFV Handson Tokyo #1
PDF
Quarkus による超音速な Spring アプリケーション開発
PDF
書こう! 使おう! 単体テスト
PDF
Ansible2.0と実用例
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
PDF
Pyats Introduction
PDF
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
PDF
超簡単!ActivePerlをWindows Serverにインストール
PPTX
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
 
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
PDF
Lapp環境をソースからインストールする(debian)
PDF
Webサーバ勉強会#1_prefork_8-15
PPT
CruiseControl.NET設置
PPTX
Myfirst cloudfoundry intro_20161201
PDF
Capistranoで自動デプロイ
PDF
TDD勉強会キックオフ for Java
PPT
SubversionServer設置
PPTX
Open shiftoriginquickstart clouddevelopercircle_20170920
PDF
How to contribute AWX
PPTX
Red Hat Forum Tokyo 2019 - Red Hat on Azure
PDF
OpenStackSDK with Ansible
PDF
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
PDF
Infrastrucure as a CodeにおけるJenkinsの役割

More Related Content

PPTX
Goss入門
PDF
OpenWrtによるサイト間IPsec接続
PDF
OPNFVのコンポーネントと調べ方
PDF
OpenCenterによるOpenStack自動構築
PPT
Gaej Explorer
PPT
Webサーバの基礎知識【編集済み】
PDF
OPNFV Handson Tokyo #1
Goss入門
OpenWrtによるサイト間IPsec接続
OPNFVのコンポーネントと調べ方
OpenCenterによるOpenStack自動構築
Gaej Explorer
Webサーバの基礎知識【編集済み】
OPNFV Handson Tokyo #1

What's hot

PDF
Quarkus による超音速な Spring アプリケーション開発
PDF
書こう! 使おう! 単体テスト
PDF
Ansible2.0と実用例
PDF
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
PDF
Pyats Introduction
PDF
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
PDF
超簡単!ActivePerlをWindows Serverにインストール
PPTX
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
 
PDF
.NET 5 勉強会 ~.NET Framework から .NET へ~
PDF
Lapp環境をソースからインストールする(debian)
PDF
Webサーバ勉強会#1_prefork_8-15
PPT
CruiseControl.NET設置
PPTX
Myfirst cloudfoundry intro_20161201
PDF
Capistranoで自動デプロイ
PDF
TDD勉強会キックオフ for Java
PPT
SubversionServer設置
PPTX
Open shiftoriginquickstart clouddevelopercircle_20170920
PDF
How to contribute AWX
PPTX
Red Hat Forum Tokyo 2019 - Red Hat on Azure
PDF
OpenStackSDK with Ansible
Quarkus による超音速な Spring アプリケーション開発
書こう! 使おう! 単体テスト
Ansible2.0と実用例
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Pyats Introduction
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
超簡単!ActivePerlをWindows Serverにインストール
C#版人狼知能エージェントの作り方~Visual Studio編~(AIWolf.NET 1.0.6版)
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
Lapp環境をソースからインストールする(debian)
Webサーバ勉強会#1_prefork_8-15
CruiseControl.NET設置
Myfirst cloudfoundry intro_20161201
Capistranoで自動デプロイ
TDD勉強会キックオフ for Java
SubversionServer設置
Open shiftoriginquickstart clouddevelopercircle_20170920
How to contribute AWX
Red Hat Forum Tokyo 2019 - Red Hat on Azure
OpenStackSDK with Ansible

Similar to Serverspec at hbstudy #45

PDF
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
PDF
Infrastrucure as a CodeにおけるJenkinsの役割
PPTX
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
PDF
JenkinsとjMeterで負荷テストの自動化
PDF
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
PPTX
serverspecを使用したサーバ設定テストの実例
PDF
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
PDF
Serverspecを使ってみた話
PDF
serverspecでサーバ環境のテストを書いてみよう
PDF
Serverspecの活用tips紹介
PPTX
Serverspec at July Tech Festa 2013
PDF
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
PPTX
(続) はじめてのCloud Foundry
PDF
ポリドックにServerspecを教えよう!
 
KEY
Web Operations and Perl kansai.pm#14
PPTX
Ansibleで始めるinfraTDD(初級編)
PDF
Using Chef for Infrastructure Automation of Ameba Pigg
PDF
Puppet on AWS
PDF
Sqale の Puppet と Chef (と テスト)
 
PDF
the study of monit
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
Infrastrucure as a CodeにおけるJenkinsの役割
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
JenkinsとjMeterで負荷テストの自動化
CMDBuildを中心とした運用管理自動化基盤OpenPIEの事例紹介
serverspecを使用したサーバ設定テストの実例
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってみた話
serverspecでサーバ環境のテストを書いてみよう
Serverspecの活用tips紹介
Serverspec at July Tech Festa 2013
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
(続) はじめてのCloud Foundry
ポリドックにServerspecを教えよう!
 
Web Operations and Perl kansai.pm#14
Ansibleで始めるinfraTDD(初級編)
Using Chef for Infrastructure Automation of Ameba Pigg
Puppet on AWS
Sqale の Puppet と Chef (と テスト)
 
the study of monit

More from Gosuke Miyashita

PPTX
イベント駆動プログラミングとI/O多重化
PPTX
10分でわかるDevOps
PPT
Danga::Socketの非同期処理の仕組みとPerlbalで非同期処理するプラグインを書く方法
PPTX
Ia型超新星とチャンドラセカール限界
PPT
Assurer - a pluggable server testing/monitoring framework
PPTX
Open Source System Administration Framework - Func
PDF
Walter ファミリーの紹介 at Shibuya.go#1
PPTX
DevOps とは何か 何であるべきか
PDF
Serverspec at Testing Framework Meeting
PPTX
Maglica - A Simple Internal Cloud Tool at #techkayac
PPTX
Puppetのススメ
PPT
Puppet Best Practices? at COOKPAD
PPTX
Inside Sqale's Backend at RubyConf Taiwan 2012
PPTX
Inside Sqale's Backend at YAPC::Asia Tokyo 2012
PPTX
Inside Sqale's Backend at Sapporo Ruby Kaigi 2012
PPTX
How Perl Changed My Life
PPT
How Danga::Socket handles asynchronous processing and how to write asynchrono...
PPT
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
PPTX
DevOpsって何?
PPTX
NoSQLに関するまとめ
イベント駆動プログラミングとI/O多重化
10分でわかるDevOps
Danga::Socketの非同期処理の仕組みとPerlbalで非同期処理するプラグインを書く方法
Ia型超新星とチャンドラセカール限界
Assurer - a pluggable server testing/monitoring framework
Open Source System Administration Framework - Func
Walter ファミリーの紹介 at Shibuya.go#1
DevOps とは何か 何であるべきか
Serverspec at Testing Framework Meeting
Maglica - A Simple Internal Cloud Tool at #techkayac
Puppetのススメ
Puppet Best Practices? at COOKPAD
Inside Sqale's Backend at RubyConf Taiwan 2012
Inside Sqale's Backend at YAPC::Asia Tokyo 2012
Inside Sqale's Backend at Sapporo Ruby Kaigi 2012
How Perl Changed My Life
How Danga::Socket handles asynchronous processing and how to write asynchrono...
Xen Summit 2008 Tokyo - Operating Xen domains through LL(Perl/Python) with li...
DevOpsって何?
NoSQLに関するまとめ

Serverspec at hbstudy #45


[8]ページ先頭

©2009-2025 Movatter.jp