11
Infrastructure as Code @kanjihtmt baserCMS

Infrastructure as codeのススメ

Embed Size (px)

Citation preview

Infrastructure as Codeのススメ

自己紹介

@kanjihtmt最近開発に関われてませんがbaserCMSユーザ会の人です

最近はサーバよりフロントエンドの方が興味ある

僕のプロビジョニングツールの変遷

自動化も重要だが「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で直接手動で変更してしまって想定どうりの状態でないことが起

こる可能性もあります。

まとめ好きなプロビジョニングツールを使おう!宗教論争をやめよう!そのかわりサーバのテスト書いてね!Chefディスっちゃったけど、良いツール!僕はサーバを何十台も管理していないから軽量なものが欲しいだけで、大規模なら僕もChef使うと思います

ご清聴ありがとうございました。m(_ _)m