Windows上でBekrshelf
× Vagrant
の環境を構築しようと思ったら、意外と面倒だったので直接Vagrant上にChefDK(Chef Development Kit)
で構築した手順をメモ。
Vagrantを準備
vagrant init #{Your Box}
# 好みに応じて
vagrant plugin install sahara
# Vagrant起動
vagrant up
# sandbox実行(saharaインストール時のみ)
vagrant sandbox on
ターゲットOSにChefDKの準備
###Provisioning設定
ターゲットとなるOSにGit
とChefDK
を準備する
provisioningに関する項目をVagrantfileに追記
ChefDK
ChefDKに関しては、各OS用のChefDKを公式サイトからダウンロード。
Git
Gitに関しては、yum
でインストールするとバージョンが古いので、ソースからインストールすることとしている。
config.vm.provision "shell", inline: <<-EOT
yum -y install zlib-devel perl-ExtUtils-MakeMaker gettext
cd ~/
wget https://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz
tar xvzf git-2.1.0.tar.gz
cd git-2.1.0
./configure
make & install
wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.3.6-1.x86_64.rpm
rpm -Uvh chefdk-0.3.6-1.x86_64.rpm
EOT
###Vagrant reload & provisioningの実行
vagrant reload
vagrant provision
##構築した環境の確認
vagrant ssh
git --version
#
bekrs -v
#
chef-solo -v
#
それぞれが無事にインストールされていることが分かる。
Berkshelfの準備・実行〜chef-soloの実行まで(おまけ)
Berkshelfの準備
Berkshelfを利用できるようにする
berks init
#####Berksfileを編集
※今回はrbenvをお試してでインストールする。
site :opscode
cookbook "git"
Cookbookの準備
berkshelf
を用いて、Cookbookを外部から取得する。
Cookbookの取得
berks vender
nodeファイルの準備
nodes/localhost.rb
# recipe
{
"run_list": [
"recipe[git]"
]
}
solo.rbの準備
solo.rb
cookbook_path ["./cookbooks"]
log_level :info
必要に応じて、記述を追加
参考:solo.rb
Chef-Soloを実行
準備が整ったところで、chef-soloを実行
chef-solo -c solo.rb -j nodes/localhost.json