Upload
kanji-htmt
View
1.927
Download
3
Embed Size (px)
Citation preview
僕のプロビジョニングツールの変遷
自動化も重要だが「Infrastructure as Code」という考え方・アプローチが気に入った
これでサーバの秘伝のタレが無くなる!サーバ環境を抽象化できる!サーバをコードで制御ってカッコイイ!
ChefやっぱChefでしょう内部DSLユーザも多く、エコシステムが成熟している感(去年の話ですが)今、すげえ流行ってる!
だが...挫折してしまった。
学習コスト高い
knife, berkshelf? 色々ありすぎでわけわからん!Windowsにknife soloがインストールできない開発のスピードが早すぎて覚えてもすぐ変わる
Ansible長所
たしかにシンプルで使いやすい!もうこれでいいじゃん!って一時はそう思った
短所 (あくまで主観です)
ほとんどシェルスクリプト
playbookを作った俺はわかるが他人には?感Infrastructure as Codeをフルに実現してない感
気に入らない!軽量なChefが欲しい!
Itamaeあった!これが求めてたもの!
ItamaeとはCookpadの荒井良太さん作Serverspecの宮下剛輔さんも開発に参加Cookpadではプロダクションで使っているらしい表現力はそのままLightweightなChefChefのわけわからんのが失くなってるcookbooksもrolesも無いレシピのみ!シンプル!
使い方(1) - レシピを書く# Apacheのインストールとサービスの有効と起動
package "httpd" do
action :install
end
service "httpd" do
action [ :enable, :start ]
end
# Apacheの設定ファイルの編集
template "httpd.conf" do
path "/etc/httpd/conf/httpd.conf"
source "./templates/httpd.conf.erb"
mode "0644"
notifies :reload, 'service[httpd]'
end
使い方(2) - sshで実行リモートサーバにRubyを入れる必要なし!
$ vagrant up$ itamae ssh -h 192.168.33.1 -p 22 -u vagrant recipe.rb
これで終わり!
レシピをまとめたければRakeに書けばいい機能が足りなければコードを書けばいい!Rubyってそういうもんじゃん!
いまはプロビジョニングツールは別になんでもいい(今ココ!)理由:大人になったというわけではなく
Severspecを知ったから!
Severspecとは?インフラのテスト
テスト駆動インフラという新しい考えを
もたらした
インフラをCI出来る
ServerspecのコードさっきのItameのApacheのレシピをテストしてみる!require 'spec_helper'
# Apacheのインストールチェックdescribe package('httpd'), :if => os[:family] == 'redhat' do it { should be_installed }end
# Apacheのサービスの有効と起動をチェックdescribe service('httpd'), :if => os[:family] == 'redhat' do it { should be_enabled } it { should be_running }end
# 80ポートでリッスンしているかをチェックdescribe port(80) do it { should be_listening }end
なんでインフラにテストがいるのか?プロビジョニングで自動化しても本当に反映されてい
るか分からない
1台だと手動で目視で確認でよいかもしれないが複数台は辛い!テストコードはドキュメント!品質や開発をドライブするためにTDDをすることはよくある話。テストコードって動くドキュメントの側面もある。これは過小評価され見落とされがちなテストの効果。CIで定期実行すればいい。他人が勝手にsshで直接手動で変更してしまって想定どうりの状態でないことが起
こる可能性もあります。