アルパカDiary Pro

はてなブログProではありません

アルパカ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 Solo - Infrastructure as Code


軽くポイントだけ箇条書き

  • chef-soloは「サーバ上でクックブックを用い、サーバ構築を実行するコマンド」です
  • knife soloは「クライアントからサーバにsshログインし、chef-soloをリモートから実行させるコマンド」です
  • Opscodeとは汎用的なcookbookの集まっているサイトです

アルパカ日記での前提/進め方

アルパカ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を実行する方法としては
capistoranocinnamonなどを使う方法もあります。

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を使いたい場合はvagrantVMを作成し、
その上でテストしたほうが良いでしょう。
詳細は参考リンクをご参照下さい。
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

次回

次回はいよいよサーバ構築を進めて行きます!