SlideShare 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

Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
辰徳 斎藤
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugTakeshi Komiya
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
 
もう 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ユーザのための構成管理入門 #pyconapacTakeshi Komiya
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアル
Kiwamu Okabe
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
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
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
Yoshinori Nakanishi
 

What's hot (20)

Itamae-Serverspec入門
Itamae-Serverspec入門Itamae-Serverspec入門
Itamae-Serverspec入門
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsugChef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapacPythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
 
ATSプログラミングチュートリアル
ATSプログラミングチュートリアルATSプログラミングチュートリアル
ATSプログラミングチュートリアル
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Haikara
HaikaraHaikara
Haikara
 

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

プリキュアの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)
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
Drecom Co., Ltd.
 
Serverspecを使ってみた話
Serverspecを使ってみた話Serverspecを使ってみた話
Serverspecを使ってみた話
Yasufumi Moritake
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
Sho Yoshida
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
hirokiky
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala外道 父
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
技術書へのいざない
技術書へのいざない技術書へのいざない
技術書へのいざない
Go Sueyoshi (a.k.a sue445)
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as codeYosuke Hiraishi
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
gree_tech
 
FabricとRailsと私
FabricとRailsと私FabricとRailsと私
FabricとRailsと私
Chikara Miyake
 
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
Takehiro Yokoishi
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
Koichi Shimozono
 

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

プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08プリキュアのRuby実装の紹介 #tqrk08
プリキュアのRuby実装の紹介 #tqrk08
 
Rubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarbRubyでプリキュアを作った #cure_advent #shibuyarb
Rubyでプリキュアを作った #cure_advent #shibuyarb
 
First step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarbFirst step of Rails Contribute‎ #shibuyarb
First step of Rails Contribute‎ #shibuyarb
 
こんな辛いテストはいやだ
こんな辛いテストはいやだ こんな辛いテストはいやだ
こんな辛いテストはいやだ
 
RSpec Performance Turning
RSpec Performance TurningRSpec Performance Turning
RSpec Performance Turning
 
プリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHirobaプリキュアのRuby実装の紹介 #RubyHiroba
プリキュアのRuby実装の紹介 #RubyHiroba
 
activerecord-turntable
activerecord-turntableactiverecord-turntable
activerecord-turntable
 
「AROW」お披露目(実用編)
「AROW」お披露目(実用編)「AROW」お披露目(実用編)
「AROW」お披露目(実用編)
 
Serverspecを使ってみた話
Serverspecを使ってみた話Serverspecを使ってみた話
Serverspecを使ってみた話
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
 
Cloudera impala
Cloudera impalaCloudera impala
Cloudera impala
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
技術書へのいざない
技術書へのいざない技術書へのいざない
技術書へのいざない
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
 
Fluentd
FluentdFluentd
Fluentd
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
FabricとRailsと私
FabricとRailsと私FabricとRailsと私
FabricとRailsと私
 
ACI + Ansible
ACI + AnsibleACI + Ansible
ACI + Ansible
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 

More from 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)
 
社内テストファースト勉強会
社内テストファースト勉強会社内テストファースト勉強会
社内テストファースト勉強会
Go Sueyoshi (a.k.a sue445)
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyGo 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)
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発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)
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
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)
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
Go Sueyoshi (a.k.a sue445)
 

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

gemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarbgemの複数バージョンカジュアルテスト #shibuyarb
gemの複数バージョンカジュアルテスト #shibuyarb
 
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartupプリキュアのRuby実装の紹介 (2015 ver)  #MeguroStartup
プリキュアのRuby実装の紹介 (2015 ver) #MeguroStartup
 
社内テストファースト勉強会
社内テストファースト勉強会社内テストファースト勉強会
社内テストファースト勉強会
 
サザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_historyサザエ実況を支える技術 #sst_history
サザエ実況を支える技術 #sst_history
 
Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01Paraductをエクストリームリリースします #428rk01
Paraductをエクストリームリリースします #428rk01
 
GemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarbGemoireというYARDホスティングアプリを作った #shibuyarb
GemoireというYARDホスティングアプリを作った #shibuyarb
 
Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発Githubエコシステムを活用したイマドキの趣味開発
Githubエコシステムを活用したイマドキの趣味開発
 
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hackプリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
プリキュアハッカソン2 参加者アンケート集計結果 #cure_hack
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
 
勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja勉強会を始めるまで #java_ja
勉強会を始めるまで #java_ja
 
アニメ実況実践入門
アニメ実況実践入門アニメ実況実践入門
アニメ実況実践入門
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19AZusaar!でのappengine活用事例 #ajn19
AZusaar!でのappengine活用事例 #ajn19
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 

Recently uploaded

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (14)

【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

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とか)をコードとして残せ るのはでかい 所感