2013/10/05

Vagrant + Chef Solo + Berksfileでのアプリケーション環境の作業手順

仕様変更だったり、ディレクトリ配置等が色々あるので自分の流儀を決める

Chef, Vagrantのインストール

chef関連ツールをインストール

> gem install chef knife-solo berkshelf

Vagrantはgemで入れると古いので公式サイトからパッケージでインストールする

Vagrant Pluginをインストール

> vagrant plugin install vagrant-berkshelf vagrant-vbox-snapshot

アプリケーションの雛形の作成

一番最初の雛形はknife soloで作成するのが無難

> knfie solo init foo

berksでBerksfile, Gemfile, Vagrantfileの雛形を生成する。gitの初期化もしてく
れる。既存ファイルを上書きするか聞かれるので"a"を押して、全部上書きする。

> berks init foo

cookbookの雛形を作成しておく

> knife cookbook create MyApp -o site-cookbooks

gitに突っ込んでおく

> git add -f * .chef/ .gitignore
> git commit

.chef/knife.rbにknife solo実行時のcookbook, role, node等のpathが入っているの
でこれは必須ファイル。このファイルがなくてハマることが多い

Vagrantの設定

いい感じに設定して、provisionをoffでとりあえず立ち上げる

> vagrant up --no-provision

chef soloの開発やsshで簡単に接続できるようにssh-configを書きだしておく。 この時ホスト名を分かりやすいものに置換しておくと良い

> vagrant ssh-config | sed 's/default/HOSTNAME/' >> ~/.ssh/config

置き換えたホスト名で接続確認

> ssh HOSTNAME

Chef SoloをVM側に容易

> knife solo prepare HOSTNAME

VMのスナップショットを作成

今後すぐに初期状態に戻せるようにスナップショットを作成しておく

> vagrant snapshot take chef-ready

Berksfileを更新

cookbook用のbundler。これから自分が書くcookbookの依存ファイルを追加する

> cat Berksfile
site :opscode

cookbook "yum"
cookbook "database"
cookbook "mysql"
cookbook "nginx"
cookbook "simple_iptables"
cookbook "openssl"

Cookbookを修正

好きなようにsite-cookbooks/MyApp/以下を修正していく

chef soloを実行

ある程度できたらVMにchefを適用する。

> knife solo cook HOSTNAME -V | tee install-log

-Vを付けて詳細なログを出す。長いのでinstall-logにも書きだしておく。 後はトライアンドエラーで徐々に修正していく

繰り返しすぎてよくわからなくなったりしたら、スナップショットの状態に戻して再度試す

> vagrant snapshot go chef-ready

完成

最終的にいい感じに仕上がったら、vagrantコマンドで一発で入るか確認する

> vagrant destroy
> vagrant up --provision

0 件のコメント:

コメントを投稿