Tbpgr Blog

Recruiting Operations tbpgr(てぃーびー) のブログ

Vagrant | Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストールする(ホストはWindows7,ゲストはUbuntu1204,ProviderはVirtualBox)

概要

Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストール

詳細

Chef + Knife Solo + Vagrantで対象サーバーにtreeをインストールします。
ホストはWindows7
ゲストはUbuntu1204
ProviderはVirtualBox

前提1

Ubuntu1204の仮想環境はvagrantにて作成済みの想定。
下記記事参照

VagrantVirtualBoxにUbuntu1204 x64環境を構築する
http://d.hatena.ne.jp/tbpg/20131017/1382018122

前提2

CygwinRubyはインストール済みの想定。

前提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
jsonを編集

%project_home%/nodes/127.0.0.1.json

{"run_list":["sample_book"]}
Vagrand再起動
vagrant reload
Window環境の場合

Windowsのホスト環境にcygwinrsyncをインストールする
※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