アルパカchef日記 1日目
1日目:chefを使うための前準備
今回はchefを使える状態になるまでの前準備とします。
chef自体の説明ですが
「chefとは何か?」「chef-serverとchef-soloの違いは?」
といった説明は省略します。
また chef-solo / knife-soloを使うための環境準備についても
既にたくさんの参考記事がありますのでそちらをご参照下さい。
http://m0t0k1ch1st0ry.com/blog/2013/04/25/vs-chef-1/
開発サーバに chef を入れるときの 11の方法 - Hack like a rolling stone
開発メモ#5 : Amazon Linux で knife-solo を使って chef-solo 実行 - naoyaのはてなダイアリー
さらにnaoyaさんのchef本を読んでおくとなお良いですね。
本気で勉強したいのであれば必須かと思います。
軽くポイントだけ箇条書き
アルパカ日記での前提/進め方
アルパカchef日記は以下のような思想で進めていく予定です。
- chef-soloを用いてサーバ単体でchef実行をする方式で進めます
- リモート実行ツールには knife solo を使います
- Opscodeに登録し、鍵は頂いておきます
- インストールしたいパッケージを決定し、必要に応じてcookbookを編集します。
- cookbookのカスタマイズは「cookbooksをsite-cookbooksでオーバーライドする」方式で進めます
- cookbook自体の管理にはBerkshelfを使います
- 環境別/ロール別の管理は「roles/
_ .json」で管理します - cookbookの使い方などを日々綴っていきます
chef-soloを用いてサーバ単体でchef実行 / リモート実行ツールは knife solo
chef-soloについては意識する必要はありません。
ほぼ全て「クライアントから knife solo コマンド」で操作します。
補足ですが、リモートからchef-soloを実行する方法としては
capistoranoやcinnamonなどを使う方法もあります。
Opscodeの鍵をもらう
Opscodeの鍵を持っているとopscodeのクックブックを
コマンドラインで簡単にインストールできるようになります。
インストールしたいパッケージを決定し、必要に応じてcookbookを編集
実は、この辺りが今後の日記のメインになる予定です。
まず兎にも角にも、インストールしたいパッケージやミドルウェアを決めます。
そしてopscodeからクックブックをダウンロードしたり、
クックブックをカスタマイズしたりしていく様を
メモしていく予定です。
cookbookのカスタマイズは「cookbooksをsite-cookbooksでオーバーライドする」方式
この辺り、いくつか管理する方法があるようですが
今回はオリジナルのクックブックを「cookbooksディレクトリ」へ置き、
カスタマイズしたクックブックは
「site-cookbooksディレクトリ」へ同名のクックブックを作成して上書きするという
オーバーライド方式で進めたいと思います。
cookbook自体の管理にはBerkshelfを使う
Berkshelfを使うとBerkfileにクックブック名を書くだけで
opscodeやgithub上にあるクックブックを
自分用にお手軽に管理できるようになります。
似たようなツールとしてはlibrarian-chefというツールもあります。
環境別/ロール別の管理は「roles/_.json」で管理
日記の中でこの話をするかどうかは未定なのですが、
「web」「db」などのロールや
「dev」「stage」「production」などの環境別設定について
rolesを用いて管理してますよー、
という話も書くかも。書かないかも。
vagrantについて
vagrantはコマンドラインから簡単にVMを作れるソリューションです。
今回はEC2メインなのでvagrantについての詳細な説明は端折ります。
ただ、実際chefを使うのであれば必須なのは間違いありません。
というか試しでchefを使いたい場合はvagrantでVMを作成し、
その上でテストしたほうが良いでしょう。
詳細は参考リンクをご参照下さい。
Vagrantとchef-soloでお気楽環境構築 | KRAY Inc
Vagrant - naoyaのはてなダイアリー
knife / knife solo /berks 基本コマンド
最後に、自分がよく使うコマンドを説明します。
knife cookbook
ローカルにcookbookを作成する
# application_base クックブックを新規作成 knife cookbook create application_base -o site-cookbooks
knife solo prepare
リモートサーバにchef-soloをインストールする
# オプション指定バージョン knife solo prepare ec2-user@xxx.xxx.xxx.xxx -i /path/to/private.key # .ssh/configを設定しておくと捗ります(knife solo共通) knife solo prepare server_name
knife solo cook
リモートサーバでchef-soloを実行する
knife solo cook server_name
berks install
Berksfileに記述されたcookbookをダウンロードする
berks install --path cookbooks
次回
次回はいよいよサーバ構築を進めて行きます!