vagrant provisionした時にundefined method `lazy' for Chef::Resource::Fileと言われた時の対処


エラー内容

「vagrant reload --provision」を実行すると下記エラーが発生した。

NoMethodError
-------------
undefined method `lazy' for Chef::Resource::File 

これは、プロビジョン対象のイメージ内に入っているchefのバージョンが古いのでエラーが出てる。

対処

vagrant-omnibusをインストールすることでchefのバージョンアップをして対処できる。

vagrant-omnibusをインストールするには下記コマンドを実行する。

$ vagrant plugin install vagrant-omnibus

その後、Vagrantfileに下記行を追加する。
:latestを指定した場合は最新のバージョンがインストールされる。
特定のバージョンをインストールしたい場合は、バージョン番号を入力する。

Vagrantfile
config.omnibus.chef_version = :latest

これで「vagrant up」すると起動時にchefのバージョンアップを実施してくれるようになる。