概要
Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストール
詳細
Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストールします。
ホストはWindows7
ゲストはUbuntu1204
ProviderはVirtualBox
前提1
Ubuntu1204の仮想環境はvagrantにて作成済みの想定。
下記記事参照
VagrantでVirtualBoxにUbuntu1204 x64環境を構築する
http://d.hatena.ne.jp/tbpg/20131017/1382018122
前提3
ホスト環境のChefとKnife Soloはインストール済みの想定。
下記記事参照
Windows7環境にChef、Knife Soloのインストール
http://d.hatena.ne.jp/tbpg/20131021/1382368005
リポジトリの作成
knife solo init sample-recipe
cd sample-recipe
リポジトリの構成確認
│ Vagrantfile │ ├─.chef │ knife.rb ├─.vagrant │ └─machines │ └─default │ └─virtualbox ├─cookbooks ├─data_bags ├─nodes ├─roles └─site-cookbooks .gitkeep
対象サーバーにChef Soloをインストール
knife solo prepare -i "C:\Users\user_name\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1
対象サーバーにChef Soloがインストールされたことを確認する
vagrant ssh vagrant@precise64:~$ chef-solo --version Chef: 11.6.0
cookbookの作成
knife cookbook create sample_book -o site-cookbooks/
以下のようなファイルが生成されます
└─sample_book ├─attributes ├─definitions ├─files │ └─default ├─libraries ├─providers ├─recipes ├─resources └─templates └─default
レシピの編集
全く意味はないですが、treeをインストールしてみます。
%project_home%/site-cookbooks/sample_book/recipes/default.rb
# # Cookbook Name:: sample_book # Recipe:: default # # Copyright 2013, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # package 'tree' do action :install end
Vagrand再起動
vagrant reload
Window環境の場合
Windowsのホスト環境にcygwinのrsyncをインストールする
※apt-cygがない場合はsetup.exeでインストール
apt-cyg install rsync
%project_home%/.chef/knife.rbの設定追記
cookbook_path ['%project_home%\cookbooks', '%project_home%\site-cookbooks'] node_path '%project_home%\nodes' role_path '%project_home%\roles' data_bag_path '%project_home%\data_bags'
レシピを実行
※なぜか.chefフォルダ配下で実行しないとknife.rbを認識してくれなかった
cd %project_home%.chef knife solo cook -i "C:\Users\user_name\.vagrant.d\insecure_private_key" -p 2222 vagrant@127.0.0.1
動作確認
treeが正しくインストールされていることを確認
$vagrant ssh $mkdir hoge $echo > ./hoge/hoge.txt $cd hoge $mkdir hoge $echo > ./hoge/hoge.txt $ tree . |-- hoge | `-- hoge.txt `-- hoge.txt