トラブル
"The guest additions on this VM do not match the installed version of VirtualBox!"と表示される
VirtualBoxとゲストOS内のVirtualBox Guest Additionsがアンマッチしているときに表示される。VirtualBox Guest Additionsのバージョンを認識して、自動的にインストールを行ってくれるvagrant-vbguest
プラグインを使って解消する。
vagrant plugin install vagrant-vbguest
vagrant reload
Provisioning時に"The expanded run list includes nonexistent roles"と表示される
Vagrantfile
内のrole_path
が誤っている場合に出力される。手元の環境はマルチVMで使用しているので、chef_solo実行部分にrole_path
指定を挟む。
web.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "../chef-kitchen/cookbooks"
chef.roles_path = "../chef-kitchen/roles"
chef.data_bags_path = "../chef-kitchen/data_bags"
chef.add_role("app")
chef.add_role("nginx_app")
end
synced_folderが動かない
ホストOSとゲストOSのディレクトリはsftp経由で同期しているため、sshd_configのsftpサブシステムが有効になっているか調べる。
/etc/ssh/sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM yes
PasswordAuthentication no
Port 22
Subsystem sftp /usr/lib/openssh/sftp-server # ←これ
以下余談。
sshをchefのopensshレシピでうっかりインストールしてしまったところ、synced_folderが使用できない問題が発生した。ゲストOSのログからvagrantがsftp接続していることがわかる。
/var/log/auth.log
Mar 12 15:33:48 precise64 sshd[1397]: subsystem request for sftp by user vagrant
opensshレシピを使いつつsftp subsystemを有効にするにはattributesを次のようにする。
openssh: {
server: {
password_authentication: "no",
port: 22,
subsystem: "sftp /usr/lib/openssh/sftp-server"
}
}