バージョン0.10.10のバグのため、現在のChefレシピは実行されていません。 Vagrantが使用するChefのバージョンを0.10.12にアップグレードするにはどうすればよいですか?
VM-私はそれらを破壊し、再構築し続けています。Vagrantベースボックスの何かを変更する必要がありますか、私の(物理的)システムのインストール?
Vagrantプラグインの使用 vagrant-omnibus 私にとってはうまくいきました:
vagrant plugin install vagrant-omnibus
プロビジョニングを行う前に、Vagrantfileでシェフバージョンを設定するだけです。
config.omnibus.chef_version = :latest
特定のバージョンを指定することもできます。
config.omnibus.chef_version = '11.6.0'
行を追加する
config.vm.provision :Shell, :inline => 'apt-get install build-essential Ruby1.9.1-dev --no-upgrade --yes'
config.vm.provision :Shell, :inline => "gem install chef --version 11.4.2 --no-rdoc --no-ri --conservative"
config.vm.provision :chef_solo
ブロックの前のVagrantfileに。
http://dougireton.com/blog/2012/12/23/automatically-upgrading-chef-client-on-vagrant-up/ に関するhaurakiのコメントの小道具
jason Mayfieldのコメントを含むように編集されました。確認して、彼にも賛成票を渡してください。 --no-upgrade
を追加して速度を上げ、2行目の--conservative
に一致させました。代わりに、Jasonが行ったことを行い、--no-upgrade
と--conservative
の両方を削除することができます。
匿名ユーザーによる提案された編集を含むように編集228653
ベースボックスを再構築します。まず、プロビジョニングとSSHなしで起動します。
vagrant up --no-provision
vagrant ssh
次に、ボックスを更新するために必要なコマンドを実行します。これには、ChefとRubyの更新が含まれます。必要に応じて、OSなどのパッケージを更新します。ダウンロードしたパッケージファイルやキャッシュなど、不要なすべてのボックスをクリーンアップする必要があります。
たとえば、VagrantボックスでOpscode Omnibus Chefのフルスタックインストーラー を使用し(元々 VeeWee でビルドされました)、パッケージも更新します。
Sudo dpkg --purge chef chef-full
Sudo true && curl -L https://www.opscode.com/chef/install.sh | Sudo bash
Sudo apt-get update && Sudo aptitude safe-upgrade
Sudo rm /var/cache/apt/archives/*.deb
ディスクを「ゼロ」にしてサイズを小さくすることを忘れないでください。
# a bunch of commands like gem install chef, apt-get upgrade, whatever
Sudo dd if=/dev/zero of=/EMPTY bs=1M
Sudo rm /EMPTY
exit
次に、ボックスをパッケージ化し、Vagrant環境に追加して使用します。
vagrant package
vagrant box add mynewlucid32 package.box
同じボックス名を使用する場合は、最初に既存のボックス(〜/ .vagrant.d/boxes/BOXNAME)を削除する必要があります。
Chefをプロビジョニングに使用するときに指定できる options が多数あります。これらの1つはversion
です。これにより、目的のChefバージョンを指定できます。
たとえば、chef.version
私のVagrantfile
からのこの抽出の行:
config.vm.provision :chef_solo do |chef|
chef.version = "10.14.2"
chef.cookbooks_path = "cookbooks"
chef.add_recipe("vagrant_main")
end
回答にコメントを投稿することはできませんが、上記のBryan Larsenの回答にメモを追加したかったのです。彼のプロビジョニングコマンドを機能させるために、新しいChefバージョンのインストール中にgemネイティブ拡張を構築できるようにする前に、行を追加する必要がありました。したがって、次のようになりました。
config.vm.provision :Shell, inline: 'apt-get install Ruby1.9.1-dev'
config.vm.provision :Shell, inline: 'gem install chef --version 11.4.4 --no-rdoc --no-ri'
これはUbuntu 13.04でのことで、だれにとっても重要です。
Chef Test Kitchenを使用している場合、次のように.kitchen.yml
ファイルでChefバージョンを指定できます。
provisioner:
name: chef_zero
require_chef_omnibus: 12.6.0