狠狠撸

狠狠撸Share a Scribd company logo
Copyright Drecom Co., Ltd. All Rights Reserved.
itamae + Serverspecで
テスト駆動インフラやってみた
2015/03/18 shibuya.rb
@sue445
Copyright Drecom Co., Ltd. All Rights Reserved.
sue445
● drecom
○ 社内ツールとか社内ライブラリとか
○ サーバサイドをアプリからインフラまで浅く広く
見守り業務
○ PO (Precure Ojisan)
● RubyKaja 2014 @Shibuya.rb
自己紹介
Copyright Drecom Co., Ltd. All Rights Reserved.
【今期の嫁】キュアトゥインクル
Copyright Drecom Co., Ltd. All Rights Reserved.
今期の黄色は肩背中が丸出し!!!!
Copyright Drecom Co., Ltd. All Rights Reserved.
【本妻】キュアピース
Copyright Drecom Co., Ltd. All Rights Reserved.
● 経緯
● itamaeについて
● Serverspecについて
● 実際のテスト駆動インフラの流れ
● itamaeレシピを社内に公開した
● 参考書籍
● 所感
Agenda
Copyright Drecom Co., Ltd. All Rights Reserved.
● 【目的】Railsミドル全部入りのOpenStackのJenkins Slave
のスナップショットを作りたかった
● ミドル全部入りならインフラがchefで作ったスナップショットが
あるとの情報
● 差分はJenkinsユーザの作成とrbenvのインストールくらいあ
ればよさそう
○ が、インフラのchefのレシピはカオスすぎて素人にはハードル高かった
● 全部入りスナップショット対して差分をitamaeでプロビジョニ
ングすることに
● せっかくなので今流行のテスト駆動インフラに挑戦してみた
経緯
Copyright Drecom Co., Ltd. All Rights Reserved.
itamae
● クックパッドが作ったプロビジョニングツール
○ http://itamae.kitchen/
○ https://speakerdeck.com/ryotarai/itamae-infra-as-
code-xian-zhuang-que-ren-hui
● Ruby製、シンプルで軽量なChefみたいなやつ
● DSLなので記述がシンプル
● DSLもRubyのコードなので適度にリファクタリングできる
● プラグインをgemから取り込める
○ 依存性をbundlerで管理できる
○ rubygems.orgに公開していればみんなが使える
Copyright Drecom Co., Ltd. All Rights Reserved.
● @mizzy氏が作ったインフラ構成をテストするためのツール
○ http://serverspec.org/
○ http://www.oreilly.co.jp/books/9784873117096/
● Ruby製
○ RSpecベースだけどテンプレをコピペするだけなので
RSpec使ったこと無くても問題ない
● 特定のプロビジョニングツール(itamaeとかChefとかPuppet
とかAnsible)に依存しないで使える
Serverspec
Copyright Drecom Co., Ltd. All Rights Reserved.
● OS毎のコマンドの違いを吸収するgem
○ https://github.com/serverspec/specinfra
○ Debianならapt-get install使うとか、yumならyum instll
使うとか
● Serverspecから切りだされてgem化されている
○ capistranoとsshkitのような関係
● itamaeもSpecinfraに依存しているので、Specinfraの中身
を知ってたらitamaeとSercerspecの両方で役に立つ
Specinfra
Copyright Drecom Co., Ltd. All Rights Reserved.
1. インフラの確認項目をテストコードで書く
2. 期待したエラーが出ることを確認 (Red)
3. サーバで適用したいインフラコードを書く
4. テストコードが通っていることを確認(Green)
5. ダメなら3に戻る
6. 必要ならリファクタリング (Refactor)
7. 1に戻る
実際のテスト駆動インフラの流れ
Copyright Drecom Co., Ltd. All Rights Reserved.
http://www.slideshare.net/t_wada/the-spirit-of-tdd/27
テスト駆動インフラでもTDDの黄金の回転
Copyright Drecom Co., Ltd. All Rights Reserved.
● 新しいサーバを作ると自分のhomeディレクトリがないので手
軽に作りたい
【例】自分のhomeディレクトリを作る
Copyright Drecom Co., Ltd. All Rights Reserved.
describe file("/home/sueyoshi_go") do
it { should be_directory }
it { should be_mode 700 }
it { should be_owned_by "sueyoshi_go" }
it { should be_grouped_into "drecom" }
end
TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb
Serverspecのテストコード(myhome_spec.rb)
Copyright Drecom Co., Ltd. All Rights Reserved.
Serverspecのテストコード(myhome_spec.rb)
/home/sueyoshi_go が
 ディレクトリで
 パーミッション700で
 ownerがsueyoshi_go で
 drecom groupに所属していること
describe file("/home/sueyoshi_go") do
it { should be_directory }
it { should be_mode 700 }
it { should be_owned_by "sueyoshi_go" }
it { should be_grouped_into "drecom" }
end
TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb
Copyright Drecom Co., Ltd. All Rights Reserved.
Serverspecのテストコード(myhome_spec.rb)
/home/sueyoshi_go が
 ディレクトリで
 パーミッション700で
 ownerがsueyoshi_go で
 drecom groupに所属していること
describe file("/home/sueyoshi_go") do
it { should be_directory }
it { should be_mode 700 }
it { should be_owned_by "sueyoshi_go" }
it { should be_grouped_into "drecom" }
end
TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb
それっぽく読める!
Copyright Drecom Co., Ltd. All Rights Reserved.
directory "/home/sueyoshi_go" do
mode "700"
owner "sueyoshi_go"
group "drecom"
not_if "ls /home/sueyoshi_go"
end
itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb
itamaeのレシピ (myhome.rb)
Copyright Drecom Co., Ltd. All Rights Reserved.
itamaeのレシピ (myhome.rb)
ディレクトリが存在していなければ
/home/sueyoshi_go を作って
 パーミッション700で
 ownerがsueyoshi_goで
 groupをdrecomにすること
directory "/home/sueyoshi_go" do
mode "700"
owner "sueyoshi_go"
group "drecom"
not_if "ls /home/sueyoshi_go"
end
itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb
Copyright Drecom Co., Ltd. All Rights Reserved.
itamaeのレシピ (myhome.rb)
ディレクトリが存在していなければ
/home/sueyoshi_go を作って
 パーミッション700で
 ownerがsueyoshi_goで
 groupをdrecomにすること
directory "/home/sueyoshi_go" do
mode "700"
owner "sueyoshi_go"
group "drecom"
not_if "ls /home/sueyoshi_go"
end
itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb
それっぽく読める!
Copyright Drecom Co., Ltd. All Rights Reserved.
● 目視確認の自動化
○ インフラコードを書く、適用、確認のサイクルを素早く回
せる
● インフラコードがリファクタリングできる
○ バグってもテストコードで検知できる
テスト駆動インフラのメリット
Copyright Drecom Co., Ltd. All Rights Reserved.
● itamae-recipe-jenkins_slave (Jenkins slaveを作るための
レシピ)
○ jenkinsユーザの作成
○ sshの鍵の転送
○ rbenvのインストール
○ jenkinsユーザの鍵を使ってのmasterからslaveへの疎
通確認
○ mysqlやmemcachedなどの起動
● (itamaeやServerspecを書いたことない状態から)開発期
間1週間ちょい
itamaeレシピを社内に公開した
Copyright Drecom Co., Ltd. All Rights Reserved.
source "https://rubygems.org"
gem "itamae"
gem "itamae-plugin-recipe-rbenv", ">= 0.2.2"
group :test do
gem "serverspec"
end
source "http://gem.xxxxxxx.com" do
gem "itamae-plugin-resource-sudo_remote_file", ">= 0.0.2"
gem "specinfra-plain_sudo", ">= 0.0.2"
end
Gemfile
社内gem
Copyright Drecom Co., Ltd. All Rights Reserved.
● itamae-plugin-resource-sudo_remote_file
○ レシピ実行ユーザが直接コピーできないファイルを
remote_fileするためのプラグイン
○ sudo cp /tmp -> sudo chmod -> scp -> remove
tmp_file な感じ
● specinfra-plain_sudo
○ 弊社環境だと sudo /bin/sh ~ が動かないことがあった
のでspecinfraのsudo実行周辺にモンキーパッチあてて
る
● どっちも弊社環境に起因していることが原因のような気がす
るので社外公開はしない予定
作った社内gem
Copyright Drecom Co., Ltd. All Rights Reserved.
● WEB+DB PRESS vol.80
○ http://gihyo.
jp/magazine/wdpress/archive/2014/vol80
○ テスト駆動インフラ特集
● Serverspec
○ http://www.oreilly.co.jp/books/9784873117096/
○ 体系的にまとまってる
○ 付録でitamaeについてもふれられてる
参考書籍
Copyright Drecom Co., Ltd. All Rights Reserved.
● itamaeはそんなにドキュメント充実してない
○ ソースは大した量じゃないのでサクッと読める
○ githubのスライドが一番よくまとまってるw
○ そんなに学習コスト高くない
● Serverspecはドキュメント充実してる
○ ベースはrspecなので普段から使ってるととっつきやす
いはず
○ オライリー本おすすめ
● どっちも日本人が開発してるので日本語でググった時の資
料が充実してる
● コマンドの作業履歴(.bash_historyとか)をコードとして残せ
るのはでかい
所感

More Related Content

What's hot (20)

滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
辰徳 斎藤
?
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsugChef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Takeshi Komiya
?
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
?
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
賢 秋穂
?
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
Masashi Shinbara
?
ご注文は监视自动化ですか?
ご注文は监视自动化ですか?ご注文は监视自动化ですか?
ご注文は监视自动化ですか?
Masahito Zembutsu
?
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
?
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
?
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
ITO Yoshiichi
?
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
akira6592
?
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
BIGLOBE Tech Talk
?
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
?
础罢厂プログラミングチュートリアル
础罢厂プログラミングチュートリアル础罢厂プログラミングチュートリアル
础罢厂プログラミングチュートリアル
Kiwamu Okabe
?
颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门
Kazuto Ohara
?
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
?
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
?
颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)
Yoshinori Nakanishi
?
滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
滨迟补尘补别-厂别谤惫别谤蝉辫别肠入门
辰徳 斎藤
?
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
?
颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较颁丑别蹿と笔耻辫辫别迟の比较
颁丑别蹿と笔耻辫辫别迟の比较
Sugawara Genki
?
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsugChef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Chef の気まぐれ環境構築 ?季節の Capistrano を添えて? #jawsug
Takeshi Komiya
?
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
?
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
テスト駆动インフラ构筑-颁丑别蹿と蝉别谤惫别谤蝉辫别肠を使ったインフラ自动化のすすめ-
賢 秋穂
?
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!?Vagrant で作る PHP 開発環境
Masashi Shinbara
?
ご注文は监视自动化ですか?
ご注文は监视自动化ですか?ご注文は监视自动化ですか?
ご注文は监视自动化ですか?
Masahito Zembutsu
?
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
Taro Hirose
?
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
?
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
akira6592
?
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
BIGLOBE Tech Talk
?
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
?
础罢厂プログラミングチュートリアル
础罢厂プログラミングチュートリアル础罢厂プログラミングチュートリアル
础罢厂プログラミングチュートリアル
Kiwamu Okabe
?
颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门颁丑别蹿概论とレシピ実践入门
颁丑别蹿概论とレシピ実践入门
Kazuto Ohara
?
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
?
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
?
颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)颁丑别蹿社内勉强会(第1回)
颁丑别蹿社内勉强会(第1回)
Yoshinori Nakanishi
?

Similar to itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb (20)

プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
Go Sueyoshi (a.k.a sue445)
?
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
First step of Rails Contribute? #shibuyarb
First step of Rails Contribute? #shibuyarbFirst step of Rails Contribute? #shibuyarb
First step of Rails Contribute? #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
こんな辛いテストはいやた?
こんな辛いテストはいやた? こんな辛いテストはいやた?
こんな辛いテストはいやた?
Takuya Mikami
?
RSpec Performance Turning
RSpec Performance TurningRSpec Performance Turning
RSpec Performance Turning
Go Sueyoshi (a.k.a sue445)
?
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
Go Sueyoshi (a.k.a sue445)
?
「础搁翱奥」お披露目(実用编)
「础搁翱奥」お披露目(実用编)「础搁翱奥」お披露目(実用编)
「础搁翱奥」お披露目(実用编)
Drecom Co., Ltd.
?
厂别谤惫别谤蝉辫别肠を使ってみた话
厂别谤惫别谤蝉辫别肠を使ってみた话厂别谤惫别谤蝉辫别肠を使ってみた话
厂别谤惫别谤蝉辫别肠を使ってみた话
Yasufumi Moritake
?
爱せよ、さもなくば捨てよ。
爱せよ、さもなくば捨てよ。爱せよ、さもなくば捨てよ。
爱せよ、さもなくば捨てよ。
Sho Yoshida
?
使える顿箩补苍驳辞1.4
使える顿箩补苍驳辞1.4使える顿箩补苍驳辞1.4
使える顿箩补苍驳辞1.4
hirokiky
?
実録!搁补颈濒蝉のはまりポイント10选
実録!搁补颈濒蝉のはまりポイント10选実録!搁补颈濒蝉のはまりポイント10选
実録!搁补颈濒蝉のはまりポイント10选
Drecom Co., Ltd.
?
技术书へのいざない
技术书へのいざない技术书へのいざない
技术书へのいざない
Go Sueyoshi (a.k.a sue445)
?
ト?リコムのInfrastructure as code
ト?リコムのInfrastructure as codeト?リコムのInfrastructure as code
ト?リコムのInfrastructure as code
Yosuke Hiraishi
?
QAエンジニアを通じて 弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
QAエンジニアを通じて弊社の開発環境がより良くなる日 ? OpenSTF 編 ?QAエンジニアを通じて弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
QAエンジニアを通じて 弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
gree_tech
?
贵补产谤颈肠と搁补颈濒蝉と私
贵补产谤颈肠と搁补颈濒蝉と私贵补产谤颈肠と搁补颈濒蝉と私
贵补产谤颈肠と搁补颈濒蝉と私
Chikara Miyake
?
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
Takehiro Yokoishi
?
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
Koichi Shimozono
?
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
こんな辛いテストはいやた?
こんな辛いテストはいやた? こんな辛いテストはいやた?
こんな辛いテストはいやた?
Takuya Mikami
?
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
Go Sueyoshi (a.k.a sue445)
?
「础搁翱奥」お披露目(実用编)
「础搁翱奥」お披露目(実用编)「础搁翱奥」お披露目(実用编)
「础搁翱奥」お披露目(実用编)
Drecom Co., Ltd.
?
厂别谤惫别谤蝉辫别肠を使ってみた话
厂别谤惫别谤蝉辫别肠を使ってみた话厂别谤惫别谤蝉辫别肠を使ってみた话
厂别谤惫别谤蝉辫别肠を使ってみた话
Yasufumi Moritake
?
爱せよ、さもなくば捨てよ。
爱せよ、さもなくば捨てよ。爱せよ、さもなくば捨てよ。
爱せよ、さもなくば捨てよ。
Sho Yoshida
?
使える顿箩补苍驳辞1.4
使える顿箩补苍驳辞1.4使える顿箩补苍驳辞1.4
使える顿箩补苍驳辞1.4
hirokiky
?
実録!搁补颈濒蝉のはまりポイント10选
実録!搁补颈濒蝉のはまりポイント10选実録!搁补颈濒蝉のはまりポイント10选
実録!搁补颈濒蝉のはまりポイント10选
Drecom Co., Ltd.
?
ト?リコムのInfrastructure as code
ト?リコムのInfrastructure as codeト?リコムのInfrastructure as code
ト?リコムのInfrastructure as code
Yosuke Hiraishi
?
QAエンジニアを通じて 弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
QAエンジニアを通じて弊社の開発環境がより良くなる日 ? OpenSTF 編 ?QAエンジニアを通じて弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
QAエンジニアを通じて 弊社の開発環境がより良くなる日 ? OpenSTF 編 ?
gree_tech
?
贵补产谤颈肠と搁补颈濒蝉と私
贵补产谤颈肠と搁补颈濒蝉と私贵补产谤颈肠と搁补颈濒蝉と私
贵补产谤颈肠と搁补颈濒蝉と私
Chikara Miyake
?
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
蝉别谤惫别谤蝉辫别肠を使用したサーバ设定テストの実例
Koichi Shimozono
?

More from Go Sueyoshi (a.k.a sue445) (15)

gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
Go Sueyoshi (a.k.a sue445)
?
社内テストファースト勉强会
社内テストファースト勉强会社内テストファースト勉强会
社内テストファースト勉强会
Go Sueyoshi (a.k.a sue445)
?
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
Go Sueyoshi (a.k.a sue445)
?
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
Go Sueyoshi (a.k.a sue445)
?
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
Go Sueyoshi (a.k.a sue445)
?
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
Go Sueyoshi (a.k.a sue445)
?
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
Go Sueyoshi (a.k.a sue445)
?
アニメ実况実践入门
アニメ実况実践入门アニメ実况実践入门
アニメ実况実践入门
Go Sueyoshi (a.k.a sue445)
?
ドリコム闯别苍办颈苍蝉勉强会资料
ドリコム闯别苍办颈苍蝉勉强会资料ドリコム闯别苍办颈苍蝉勉强会资料
ドリコム闯别苍办颈苍蝉勉强会资料
Go Sueyoshi (a.k.a sue445)
?
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
?
AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19
Go Sueyoshi (a.k.a sue445)
?
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
Go Sueyoshi (a.k.a sue445)
?
gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
Go Sueyoshi (a.k.a sue445)
?
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
Go Sueyoshi (a.k.a sue445)
?
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
Go Sueyoshi (a.k.a sue445)
?
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
骋颈迟丑耻产エコシステムを活用したイマドキの趣味开発
Go Sueyoshi (a.k.a sue445)
?
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
Go Sueyoshi (a.k.a sue445)
?
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
补辫辫别苍驳颈苍别活用事例资料蔼罢顿顿叠颁札幌2.1
Go Sueyoshi (a.k.a sue445)
?

Recently uploaded (13)

ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ssuserfcafd1
?
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
?
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
周 小渕
?
Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ドメインモデリング基本编①词全体の流れ2025冲02冲27社内向け开催.辫辫迟虫
ssuserfcafd1
?
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
?
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
ビットコインテストネットでの送金体験付きビットコイン?ブロックチェーン勉强会资料
周 小渕
?
Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?

itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. itamae + Serverspecで テスト駆動インフラやってみた 2015/03/18 shibuya.rb @sue445
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. sue445 ● drecom ○ 社内ツールとか社内ライブラリとか ○ サーバサイドをアプリからインフラまで浅く広く 見守り業務 ○ PO (Precure Ojisan) ● RubyKaja 2014 @Shibuya.rb 自己紹介
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. 【今期の嫁】キュアトゥインクル
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 今期の黄色は肩背中が丸出し!!!!
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 【本妻】キュアピース
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. ● 経緯 ● itamaeについて ● Serverspecについて ● 実際のテスト駆動インフラの流れ ● itamaeレシピを社内に公開した ● 参考書籍 ● 所感 Agenda
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. ● 【目的】Railsミドル全部入りのOpenStackのJenkins Slave のスナップショットを作りたかった ● ミドル全部入りならインフラがchefで作ったスナップショットが あるとの情報 ● 差分はJenkinsユーザの作成とrbenvのインストールくらいあ ればよさそう ○ が、インフラのchefのレシピはカオスすぎて素人にはハードル高かった ● 全部入りスナップショット対して差分をitamaeでプロビジョニ ングすることに ● せっかくなので今流行のテスト駆動インフラに挑戦してみた 経緯
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. itamae ● クックパッドが作ったプロビジョニングツール ○ http://itamae.kitchen/ ○ https://speakerdeck.com/ryotarai/itamae-infra-as- code-xian-zhuang-que-ren-hui ● Ruby製、シンプルで軽量なChefみたいなやつ ● DSLなので記述がシンプル ● DSLもRubyのコードなので適度にリファクタリングできる ● プラグインをgemから取り込める ○ 依存性をbundlerで管理できる ○ rubygems.orgに公開していればみんなが使える
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. ● @mizzy氏が作ったインフラ構成をテストするためのツール ○ http://serverspec.org/ ○ http://www.oreilly.co.jp/books/9784873117096/ ● Ruby製 ○ RSpecベースだけどテンプレをコピペするだけなので RSpec使ったこと無くても問題ない ● 特定のプロビジョニングツール(itamaeとかChefとかPuppet とかAnsible)に依存しないで使える Serverspec
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. ● OS毎のコマンドの違いを吸収するgem ○ https://github.com/serverspec/specinfra ○ Debianならapt-get install使うとか、yumならyum instll 使うとか ● Serverspecから切りだされてgem化されている ○ capistranoとsshkitのような関係 ● itamaeもSpecinfraに依存しているので、Specinfraの中身 を知ってたらitamaeとSercerspecの両方で役に立つ Specinfra
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. 1. インフラの確認項目をテストコードで書く 2. 期待したエラーが出ることを確認 (Red) 3. サーバで適用したいインフラコードを書く 4. テストコードが通っていることを確認(Green) 5. ダメなら3に戻る 6. 必要ならリファクタリング (Refactor) 7. 1に戻る 実際のテスト駆動インフラの流れ
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. http://www.slideshare.net/t_wada/the-spirit-of-tdd/27 テスト駆動インフラでもTDDの黄金の回転
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. ● 新しいサーバを作ると自分のhomeディレクトリがないので手 軽に作りたい 【例】自分のhomeディレクトリを作る
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. describe file("/home/sueyoshi_go") do it { should be_directory } it { should be_mode 700 } it { should be_owned_by "sueyoshi_go" } it { should be_grouped_into "drecom" } end TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb Serverspecのテストコード(myhome_spec.rb)
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. Serverspecのテストコード(myhome_spec.rb) /home/sueyoshi_go が  ディレクトリで  パーミッション700で  ownerがsueyoshi_go で  drecom groupに所属していること describe file("/home/sueyoshi_go") do it { should be_directory } it { should be_mode 700 } it { should be_owned_by "sueyoshi_go" } it { should be_grouped_into "drecom" } end TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. Serverspecのテストコード(myhome_spec.rb) /home/sueyoshi_go が  ディレクトリで  パーミッション700で  ownerがsueyoshi_go で  drecom groupに所属していること describe file("/home/sueyoshi_go") do it { should be_directory } it { should be_mode 700 } it { should be_owned_by "sueyoshi_go" } it { should be_grouped_into "drecom" } end TARGET_HOST=xxx.xxx.xxx.xxx rspec spec/myhome_spec.rb それっぽく読める!
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. directory "/home/sueyoshi_go" do mode "700" owner "sueyoshi_go" group "drecom" not_if "ls /home/sueyoshi_go" end itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb itamaeのレシピ (myhome.rb)
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. itamaeのレシピ (myhome.rb) ディレクトリが存在していなければ /home/sueyoshi_go を作って  パーミッション700で  ownerがsueyoshi_goで  groupをdrecomにすること directory "/home/sueyoshi_go" do mode "700" owner "sueyoshi_go" group "drecom" not_if "ls /home/sueyoshi_go" end itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. itamaeのレシピ (myhome.rb) ディレクトリが存在していなければ /home/sueyoshi_go を作って  パーミッション700で  ownerがsueyoshi_goで  groupをdrecomにすること directory "/home/sueyoshi_go" do mode "700" owner "sueyoshi_go" group "drecom" not_if "ls /home/sueyoshi_go" end itamae ssh -h xxx.xxx.xxx.xxx -p 10022 recipes/myhome.rb それっぽく読める!
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. ● 目視確認の自動化 ○ インフラコードを書く、適用、確認のサイクルを素早く回 せる ● インフラコードがリファクタリングできる ○ バグってもテストコードで検知できる テスト駆動インフラのメリット
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. ● itamae-recipe-jenkins_slave (Jenkins slaveを作るための レシピ) ○ jenkinsユーザの作成 ○ sshの鍵の転送 ○ rbenvのインストール ○ jenkinsユーザの鍵を使ってのmasterからslaveへの疎 通確認 ○ mysqlやmemcachedなどの起動 ● (itamaeやServerspecを書いたことない状態から)開発期 間1週間ちょい itamaeレシピを社内に公開した
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. source "https://rubygems.org" gem "itamae" gem "itamae-plugin-recipe-rbenv", ">= 0.2.2" group :test do gem "serverspec" end source "http://gem.xxxxxxx.com" do gem "itamae-plugin-resource-sudo_remote_file", ">= 0.0.2" gem "specinfra-plain_sudo", ">= 0.0.2" end Gemfile 社内gem
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. ● itamae-plugin-resource-sudo_remote_file ○ レシピ実行ユーザが直接コピーできないファイルを remote_fileするためのプラグイン ○ sudo cp /tmp -> sudo chmod -> scp -> remove tmp_file な感じ ● specinfra-plain_sudo ○ 弊社環境だと sudo /bin/sh ~ が動かないことがあった のでspecinfraのsudo実行周辺にモンキーパッチあてて る ● どっちも弊社環境に起因していることが原因のような気がす るので社外公開はしない予定 作った社内gem
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. ● WEB+DB PRESS vol.80 ○ http://gihyo. jp/magazine/wdpress/archive/2014/vol80 ○ テスト駆動インフラ特集 ● Serverspec ○ http://www.oreilly.co.jp/books/9784873117096/ ○ 体系的にまとまってる ○ 付録でitamaeについてもふれられてる 参考書籍
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. ● itamaeはそんなにドキュメント充実してない ○ ソースは大した量じゃないのでサクッと読める ○ githubのスライドが一番よくまとまってるw ○ そんなに学習コスト高くない ● Serverspecはドキュメント充実してる ○ ベースはrspecなので普段から使ってるととっつきやす いはず ○ オライリー本おすすめ ● どっちも日本人が開発してるので日本語でググった時の資 料が充実してる ● コマンドの作業履歴(.bash_historyとか)をコードとして残せ るのはでかい 所感