Chefの11.6からlazy attribute evaluation(属性遅延評価)が利用できるようになりました。

これを使ってファイルのコピーをやったりしていました。

こんな感じ。
file "set localtime" do
  action :create
  path "/etc/localtime"
  content lazy { File.open("/usr/share/zoneinfo/#{node[:base][:localtime]}").read }
  only_if { not node[:base][:localtime].nil? and File.exists?("/usr/share/zoneinfo/#{node[:base][:localtime]}") }
end


knife-soloで動かしているときは良かったのですが、Vagrant1.4.3経由で実行すると、
NoMethodError
-------------
undefined method `lazy' for Chef::Resource::File

と、叱られます。

VMにインストールされているChefのバージョンは・・・
$ chef-client --version
Chef: 11.4.4

ということで、少し古いChefが入るためlazy使えないようです。

何とかVagrantでrecipe実行前に、新しいChefにしたかったので、Vagrantfileのchef_solo関連のブロックの手前に以下のように記述してみました。
 config.vm.provision :shell, :inline => "curl -L https://www.opscode.com/chef/install.sh | sudo bash"

成功・・・がしかし、、これだとvagrant provisionの度に更新が走りますね。。。
ほぼ無害だけど時間掛かるし、Wifi接続できない出先で作業するときはコメントアウトしないと動かせません。

調べていたところ、vagrant-omnibusプラグインというものがあり。

以下のようにインストールして、
vagrant plugin install vagrant-omnibus

さっきのconfig.vm.provision~と挿入した行を以下に差し替えます。
  config.omnibus.chef_version = :latest

再度、新規でvagrant upしてみると・・・
[default] Installing Chef 11.8.2 Omnibus package...
[default] Downloading Chef 11.8.2 for el...
[default] downloading https://www.opscode.com/chef/metadata?v=11.8.2&prerelease=false&p=el&pv=6&m=x86_64
  to file /tmp/install.sh.3385/metadata.txt
trying wget...
[default] url https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.8.2-1.el6.x86_64.rpm
md5 10f3d0da82efa973fe91cc24a6a74549
sha256 044558f38d25bbf75dbd5790ccce892a38e5e9f2a091ed55367ab914fbd1cfed
[default] downloaded metadata file looks valid...
[default] downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.8.2-1.el6.x86_64.rpm
  to file /tmp/install.sh.3385/chef-11.8.2.x86_64.rpm
trying wget...
[default] Checksum compare with sha256sum succeeded.
[default] Installing Chef 11.8.2
installing with rpm...
[default] warning: 
[default] /tmp/install.sh.3385/chef-11.8.2.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
[default] Preparing...           
      [default] #########################
[default] #########################
[default] 
[default] chef
[default] #
[default] #
~中略~
[default] #
[default] #
[default] 
[default] Thank you for installing Chef!

モリモリインストールしてくれました。

もちろん2回目からは余計なことはしたりしません。
[default] Chef 11.8.2 Omnibus package is already installed.