VirtualBox、Vagrant、knifeによる開発環境作成をやってみる。(5)
knife-soloのインストール
下記のコマンドでインストール。
>gem install knife-solo
バージョンは0.3.0、また一緒にインストされたChefのバージョンは11.6.0だった。また、後からおこなう「knife solo init chef-repo」の時に色々怒られる(ERROR)ので、下記のコマンドも実行しておく。
>gem install win32-process --no-ri --no-rdoc >gem install ffi --no-ri --no-rdoc >gem install windows-pr --no-ri --no-rdoc >gem install net-ssh -v 2.6.5
レシピを準備する
下記で、レシピのテンプレートが作られる。このchef-repoというディレクトリにレシピを作成する。
>knife solo init chef-repo
次に、下記を実行する。
>cd chef-repo >knife solo prepare -i "C:\Users\[ユーザー名]\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1
knife solo prepare を実行すると、VMにchefをインストールしてくれているみたい。ちなみに、事前に ssh が通るように ~/.ssh/config にどのキーを使うかを書いておいたほうが、毎回-iオプションを入力せずにすむらしい。書式はこんなん。
Host 127.0.0.1 HostName 127.0.0.1 Port 2222 IdentityFile C:\Users\k-ohyama\.vagrant.d\insecure_private_key User vagrant
rsyncとsshのパスを通す
Windowsの場合rsyncがないので、インストールする必要がある。knife-soloのREADME.rdocのページを見てみる。すると、下記のサイトを見てrsyncをインストールせよ、と書かれていた。
https://github.com/thbar/rsync-windows
しかし面倒臭いので、ここ(https://www.itefix.no/i2/cwrsync-get?quicktabs_7=1)からインストーラーを入手して、インストール先にパスを通す。
レシピの編集
initで作ったフォルダ構成は下記のようになっている。
cookbooks
├[サービス名]/recipes/default.rb → レシピの内容
├data_bags
├nodes
│ └xx.xx.xx.xx.json → レシピを実行するノードに対して、実行するレシピが書かれたファイル。
├roles
├site-cookbooks
└solo.rb
レシピのひな形は下記のコマンドで作成する。
>knife cookbook create [recipe名] -o cookbooks
このコマンドでcookbooks/[recipe名]が作られる。
たとえば、VMにjavaをインストールするというレシピの場合、まず下記でjavaという名前のcookbookを作る。
>knife cookbook create java -o cookbooks
そしてcookbooks/ java/recipes/default.rbを編集する。
下記は、インストールを行うレシピ。
%w{java-1.7.0-openjdk}.each do |pkg| package pkg do action :install end end
nodes/127.0.0.1.jsonを下記のように編集する。
{ "run_list":["recipe[java]"] }
これで実行できるはず。
今回は、Java7+GlassFish3.1.2.2+PostgreSQL9.2.6のレシピで行う。
レシピはこちら。
レシピを実行する
>knife solo cook -i "C:\Users\[User名]\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1