Vagrant+chef-soloの練習

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

VirtualBox(VMWare)で仮想マシンが作れるのを、更にコマンドで簡単に設定していく (備忘録)

環境・レシピの用意

  • OS X 10.8.4
  • ruby-1.9.3-p392

$gem install chef -- --no-ri --no-rdoc

$knife configure

$gem install knife-solo -- --no-ri --no-rdoc

cookbook 作成

リポジトリを作って、その中にmycookbookというcookbookを作る

knife solo init myrepo

knife cookbook create mycookbook -o myrepo/site-cookbooks/

  • デフォルトは/var/chef/以下にいろいろ作られる

  • /etc/chef/solo.rb
    => 生まれたてのVagrantVM上で
    chef-solo
    だけ実行すると探していた。

chef-soloをVM上で実行する

  • ゲストで/etc/chef/solo.rb を作成。
  • /vagrant/myrepoをcookbookpathに指定
  • sudo chef-solo -o cookbookname
  • これでとりあえずいける

chef-soloを実行する際に参照するファイル
cookbook作成のファイルパスを指定することなどができる

solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path ["/vagrant/myrepo/site-cookbooks"]
log_level :debug
/vagrant/myrepo/site-cookbooks/mycookbook/recipes/default.rb
#
# Cookbook Name:: mycookbook
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#

log 'Hello Chef'
package 'httpd' do
    action :install
end

package "postgresql-server" do
    action :install
end

#version_file = "/var/lib/post

cookbook実行

vagrantで生成したVMにchef-soloでcookbookを流し込むのをしたい

下記のように追加する

config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "myrepo/site-cookbooks"
    chef.add_recipe "mycookbook"
    chef.json = {:nameservers => ["10.0.0.1"]}
end

vagrant upですべて正常にいけば終わり