入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (18件) を見る
Wordpressでなんか作ろうかと思っているのだけど、手元のVagrantで開発環境作りたいなーと思ってて、どうせならChefでインフラの構成管理してみるかってことで今更ながらChefを本格的に触ってみた。
意外とネットではわからなかったChef入門
今までもどんなもんかは大体知ってたつもりだったからネットで入門記事でも見れば使えるだろうと思って読み始める…がどれもまったくわからない。
いや、書いてあることはわかるし動くには動くんだけど用語とか概念がわからない。肝心なところの説明があっさりしていて、失礼ながらほんとに理解できてますかとか思ってしまうレベル。
おそらく紙面の都合とか無理に説明しようとすると複雑すぎてかえってわかりづらいとかだろうけど…
かといって公式ドキュメントはそれはそれは難解っていう。
このような状況で体系的にChefの説明をしていてわかりやすい本でも読みたいなってところで調べてみると候補は以下の感じ、
参考;書評「Chef活用ガイド」と「Chef実践入門」について - さよならインターネット
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)
- 作者: 吉羽龍太郎,安藤祐介,伊藤直也,菅井祐太朗,並河祐貴
- 出版社/メーカー: 技術評論社
- 発売日: 2014/05/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
- 作者: 澤登亨彦,樋口大輔,クリエーションライン株式会社
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/04/25
- メディア: 大型本
- この商品を含むブログを見る
この二冊は圧倒的知名度だし、このどちらかにしようと最初は考えてた。
Kindleで読みたいなってところから前者よりだったんだけど、レビューによると長くて厚いリファレンス本臭がするしなぁと迷っていたんだけど、@naoya_itoさんの「入門Chef Solo」がボリューム的にも内容的にも価格的にもベストじゃね?とか思って勢いで買った。
恐縮ながら書評
結果的にはベストチョイスだった。
凄くわかりやすいしボリュームの割に網羅的。
目次を見れば一目瞭然。
第1章 Chefとは何かを知りたい ─ Chef Overview
第2章 Chef Soloをインストールして試したい ─ Hello Chef!
第3章 nginxをChef Soloで立ち上げたい
第4章 Chef Soloの試験環境を3分で用意する ─ Vagrant
第5章 リモートからchef-soloを実行する ─ knife-solo
第6章 レシピを作って実行する流れをおさらいしたい
第7章 サードパーティのChef クックブックを使いたい
第8章 代表的なレシピのサンプルを見たい ─ td-agent のレシピを読む
第9章 パッケージをインストールする ─ Package
第10章 サービスを起動したい ─ ServiceとNotification
第11章 テンプレートから設定ファイルを配置したい ─ Template
第12章 ファイルやディレクトリを扱いたい ─ Cookbook File, Directory
第13章 ユーザーを作成したい ─ User, Group
第14章 gitレポジトリからファイルを取ってくる ─ Git
第15章 任意のシェルスクリプトを実行したい ─ Execute, Script
第16章 その他のResource
第17章 レシピ落ち穂拾い ─ run_list, ファイル分け, include_recipe
第18章 Resourceを自分で定義したい ─ Definition
第19章 AttributeとData Bag
第20章 ノードを役割ごとにグルーピングして管理したい ─ Role
第21章 サードパーティのクックブックをBundler 風に管理したい ─ Berkshelf
第22章 Chef Serverの様子を知りたい ─ 概要からセットアップまで
第23章 どこまでをChefでやるべきか
一見「長っ!」って感じだけどこれだけの内容で百数十ページでさらさら読めるのでそこは安心していただきたい。
これをひと通り読めば公式のcookbookが読めるようになるからそれの利用とか編集もできるようになる(読む前は正直意味不明だったw)
あと読んでて印象深かったのは、下記の部分
このスナップショット機能をはじめとする AWS の各種サービス利用すると、そうでは ない場合に比較して運用が非常に楽になりました。それだけでも十分に楽だったので、こ れ以上の自動化は必要無いかな......なんて思っていました。 ところがスナップショットを多数とって管理しているうちに、どのスナップショットが どういった状態で保存されたものなのかを管理するのが大変になってきました。
これはまさに僕も思っていて、AWSのAMIみたいなスナップショットがあれば別にいいんじゃね?って最初は思ってたんだけど、古いスナップショットとか結局何が今と違うのかわからなくなるんだよね。
すべての状態はコードに記 載されているので記憶に頼る必要はありませんし、履歴は git でバージョン管理されてい ます。インスタンスを立ち上げたらとりあえずレシピを適用しておけば、思ったとおりの 状態にノードが収束してくれます。こんなに良いことはないですね。
Chef使うとここが解消されるってね。フンフンなるほどなーという感じだった。インフラをコードで扱えることの真髄だね。
利点はわかってるつもりだったけど改めて再認識。
価格も手頃だし、マジでおすすめします。
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (18件) を見る
※達人出版会ならpdfでも買えます。
補足1
書籍の中で、nginxをインストールするためにepelを追加する場面があるのだけど、
{ "run_list" : [ "yum::epel" ] }
実は、この書籍が発行された後にyumのcookbookがバージョンアップしていて、yumのrecipeからepelというのはなくなっている。
なのでこのまま実行すると、
Chef::Exceptions::RecipeNotFound -------------------------------- could not find recipe epel for cookbook yum
こんな感じで怒られる。
対応方法は2つある。
$ knife cookbook site install yum-epel
$ vi nodes/hoge.json
{
"run_list" : [
"yum-epel",
"nginx"
]
}
2. yumのyum_repositoryというResourceを使って自分で定義する
自分で書いたnginxのrecipeを以下のように追記して、nodeの方はいじらない。
詳しくはyumのcookbookのREADME.mdに例が書いてある。
yum_repository 'epel' do description 'Extra Packages for Enterprise Linux' mirrorlist 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6&arch=$basearch' gpgkey 'http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6' action :create end
更に補足
epelからnginx入れるとバージョンが1.0.15になる。
最新のStableバージョンが1.6.1なのでだいぶレガシーである…
これを回避して新しいバージョンを入れる方法は別エントリで書きます。