前回 は環境構築でしたが、試行錯誤する中で、いろいろとエラーに出会いました。
再び同じようなエラーに出会った時に読み返せるよう、エラーの内容と自分の対応を残しておきます。
環境
- ホストOS: Windows7 x64
- VirtualBox: 4.2.10
- Ruby: 1.9.3p392
- Vagrant: 1.1.5
- Chef: 11.4.0
- knife-solo: 0.3.0pre2
knife-soloのインストール時のエラー
knife-soloを --preオプションで入れたところ、以下のエラーとなりました。
gem install knife-solo --pre --no-ri --no-rdoc ERROR: While executing gem ... (Gem::DependencyError) Unable to resolve dependencies: knife-solo requires librarian (~> 0.0.20); c hef requires net-ssh (~> 2.2.2)
自分の場合は、
gem install knife-solo -v 0.3.0.pre2 --no-ri --no-rdoc
のように、バージョンを指定してインストールすることで対応しました。
「vagrant up」時のエラー (VERR_DISK_FULL)
d:\fuga>vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'hoge'... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["import", "C:/Users//.vagrant.d/boxes/hoge/virtualbox/box.ovf"] Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Interpreting C:\Users\ \.vagrant.d\boxes\hoge\virtualbox\box.ovf... OK. 0%... Progress state: VBOX_E_FILE_ERROR VBoxManage.exe: error: Appliance import failed VBoxManage.exe: error: Could not create the clone medium 'C:\Users\ \VirtualBox VMs\ubuntu-cloudimg-precise-vagrant-i386\box-disk1.vmdk'. VBoxManage.exe: error: VMDK: cannot write allocated data block in 'C:\Users\ \VirtualBox VMs\ubuntu-cloudimg-precise-vagrant-i386/box-disk1.vmdk' (VERR_DISK_FULL) VBoxManage.exe: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Appliance, interface IAppliance VBoxManage.exe: error: Context: "int __cdecl handleImportAppliance(struct HandlerArg *)" at line 781 of file VBoxManageAppliance.cpp
途中のエラー「VERR_DISK_FULL」にもある通り、ディスクの容量が足りない時に表示されました。
そのため、不要になったVMは「vagrant destroy」で削除します。
なお、このエラーを調べているうちに、以下のパスが分かりました (いずれもデフォルトインストールした場合)。
項目 | 値 |
---|---|
VagrantによるVMの作成先 | %USERPROFILE%\VirtualBox VMs |
VBoxManageの場所 | C:\Program Files\Oracle\VirtualBox\VBoxManage |
手元の環境ではCドライブの容量が少なかったため、VMの作成先をVirtualBoxのVBoxManage.exeにて変更しました。
# VMの作成先のフォルダを生成 d:\>mkdir vms # 作成先を「d:\vms」の下へと変更 d:\vms>"C:\Program Files\Oracle\VirtualBox\VBoxManage" setproperty machinefolder d:\vms
「knife-solo prepare」時のエラー
chef-repoの中で実行しなかった場合、最後のjsonファイル生成が失敗します。
knife solo prepare vagrant@192.168.33.10 Bootstrapping Chef... (略) Thank you for installing Chef! Generating node config 'nodes/192.168.33.10.json'... ERROR: Errno::ENOENT: No such file or directory - nodes/192.168.33.10.json
cookbookにて、apt-get update無し・「ubuntu-desktop」パッケージのインストールのみを記載し、実行した時のエラー
以下の通りです。ただ、再度同じように試してみた時は発生しませんでした...
D:\fuga\chef-repo\cookbooks\piyo\recipes\default.rb
package "ubuntu-desktop" do action :install end
エラー内容
INFO: Processing package[ubuntu-desktop] action install (hello::default line 13) ================================================================================ Error executing action `install` on resource 'package[ubuntu-desktop]' ================================================================================ Chef::Exceptions::Exec ---------------------- apt-get -q -y install ubuntu-desktop=1.267 returned 100, expected 0 Resource Declaration: --------------------- # In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/piyo/recipes/default.rb 12: # 13: package "ubuntu-desktop" do 14: action :install 15: end 16: Compiled Resource: ------------------ # Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/piyo/recipes/default.rb :13:in `from_file' package("ubuntu-desktop") do retry_delay 2 retries 0 recipe_name "default" action [:install] cookbook_name :piyo package_name "ubuntu-desktop" end ERROR: Running exception handlers ERROR: Exception handlers complete FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out FATAL: Chef::Exceptions::Exec: package[ubuntu-desktop] (hello::default line 13) had an error: Chef::Exceptions::Exec: apt-get -q -y install ubuntu-desktop=1.267 returned 100, expected 0 Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete.
returned 100は、エラーがあったことを示すようです。
参考:Man page of APT-GET
knife solo prepare 時のエラー (2013/5/1 追記)
- vagrant up の後、いろいろとやる
- vagrant destroy で削除
- Vagrantfile内のPrivate IP設定を変更しないまま、再度 vagrant up して再度仮想マシンを作る
- knife solo prepare で以下のエラーが発生した
ERROR: Net::SSH::HostKeyMismatch: fingerprint 23:bc:39:d7:f3:dd:9a:1a:01:f3:3b:a4:ec:3b:9d:02 does not match for "192.168.33.10"
原因は、以下のファイル「known_hosts」に、destroyした仮想マシンののエントリが残っていたためです。
%USERPROFILE%\.ssh\known_hosts
そのため、known_hostsから不要なエントリを削除すれば、knife solo prepare することができます。