VMでChefを実行してみる

前回前々回で、MacOS上にゲストOSが起動しChefを実行できる環境が整いました。

引き続きchef-soloとknife-soloで手軽に環境構築をする - Bouldering & Com.を参照。
いざ、レシピ作りへ。
knifeで雛形が作れるということで利用。

  • レシピを作る
$ knife cookbook create base -o cookbooks

cookbooksというディレクトリの中にbaseというディレクトリが作られ、さらにその中にテンプレっぽいディレクトリ群ができた。

$ emacs cookbooks/base/recipes/default.rb
#
# Cookbook Name:: lesson
# Recipe:: default
#
# Copyright 2013, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "message" do
    message "This is the message that will be added to the log."
    level :info
end

directory "/tmp/tmpdir" do
    mode "0755"
    action :create
end
  • 実行対象として設定
$ emacs nodes/192.168.33.10.json
{"run_list":[ "recipe[base]" ]}
  • chef実行
cd cookbooks/
knife solo cook -i ~/.vagrant.d/insecure_private_key vagrant@192.168.33.10

Converging 0 resources
Chef Client finished, 0 resources updated

とか言われてうまくいかない。
WARNING: Local cookbook_path '/var/chef/cookbooks' does not exist
とか出てるからどっかにパスを設定する必要がありそうだ。

  • Vagrantfileを編集

今度はVagrantとChef-soloの基本 かなり分かってないこと多いです · GitHubを参考に。

$ emacs Vagrantfile
    config.vm.provision :chef_solo do |chef|
      chef.cookbooks_path = "/path/to/chef/cookbooks"
      chef.add_recipe "base"
    end

に書き換え。

$ vagrant reload

エラーらしきものが出てない。いけたのか。

  • ゲストOSで確認
$ ll /tmp/
drwxr-xr-x  2 root    root  4096 Aug 12 09:15 tmpdir

いたいた。何か時計あってないけど。


煮え切らないけど一連の流れは一応いけた。