Ubuntu 默认同步文件夹不存在';流浪汉起床后不工作,但流浪汉换装后工作

Ubuntu 默认同步文件夹不存在';流浪汉起床后不工作,但流浪汉换装后工作,ubuntu,cassandra,vagrant,virtualbox,Ubuntu,Cassandra,Vagrant,Virtualbox,我正在构建一个Virtualbox管理的VM,打算用作Cassandra/OpsCenter的节点 在设置过程中,我注意到同步文件夹没有正确安装在vagrant up上。我的意思是,一旦虚拟机启动,当我试图从虚拟机内部触摸/vagrant/foo.txt时,我会得到一个权限错误。而且,如果我在主机上的项目目录中创建了一个文件,它不会显示在来宾VM上的/vagrant中 我没有在Vagrant文件中设置同步文件夹,只是使用默认行为。但是当我vagrant reload时,一旦我用SSH将其返回到V

我正在构建一个Virtualbox管理的VM,打算用作Cassandra/OpsCenter的节点

在设置过程中,我注意到同步文件夹没有正确安装在
vagrant up
上。我的意思是,一旦虚拟机启动,当我试图从虚拟机内部触摸/vagrant/foo.txt时,我会得到一个权限错误。而且,如果我在主机上的项目目录中创建了一个文件,它不会显示在来宾VM上的
/vagrant

我没有在Vagrant文件中设置同步文件夹,只是使用默认行为。但是当我
vagrant reload
时,一旦我用SSH将其返回到VM中,sync文件夹就会突然按预期工作

我在
vagrant up
vagrant reload
的日志中没有发现错误

在阅读了其他一些SO帖子之后,我运行了
vagrant-up--debug
vagrant-reload--debug
,并取出了与
mount
操作相关的所有输出

文件、配置代码和所选日志粘贴在下面。知道这里有什么吗?蒂亚

我使用的是Virtualbox 4.3.12 r93733,Vagrant 1.6.3,运行在OSX Mavericks 10.9.4上


流浪汉档案 Bootstrap.sh 提取的日志
初始调试语句(从第2701行开始)
信息同步文件夹:调用同步文件夹启用:virtualbox
信息界面:输出:装载共享文件夹。。。
信息界面:输出:==>默认值:装载共享文件夹。。。
==>默认值:装载共享文件夹。。。
信息界面:detail:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
信息界面:细节:默认值:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
默认值:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
…第2997行
调试来宾:搜索cap:mount\u virtualbox\u shared\u文件夹
调试来宾:签入:ubuntu
调试来宾:签入:debian
调试来宾:签入:linux
调试来宾:在linux中找到cap:mount\u virtualbox\u shared\u文件夹
信息来宾:执行功能:mount#u virtualbox_shared_folder[#、“vagrant”、“/vagrant”、{:guestpath=>“/vagrant”、:hostpath=>“/Users/andrew/projects/tutorials/vagrant_cassandra”、:disabled=>false、:owner=>“vagrant”、:group=>“vagrant”}(ubuntu)
调试ssh:正在检查ssh是否已就绪。。。
调试ssh:重新使用ssh连接。
信息ssh:ssh准备好了!
调试ssh:重新使用ssh连接。
infossh:Execute:(sudo=false)
调试ssh:退出状态:0
…第3026行
INFO ssh:Execute:mount-t vboxsf-o uid=`id-u vagrant`,gid=`getent group vagrant | cut-d:-f3`vagrant/vagrant(sudo=true)
调试ssh:stderr:stdin:不是tty
调试ssh:退出状态:0
…第3039行
调试ssh:重新使用ssh连接。
INFO ssh:Execute:/sbin/initctl emit--no wait vagrant MOUNTPOINT=/vagrant(sudo=true)
调试ssh:stderr:stdin:不是tty
调试ssh:退出状态:0
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
…线路
#################
###此时,我的项目根目录尚未装入/vagrant,因为它是空的
vagrant@precise64:~$ls/流浪汉/
vagrant@precise64:~$
###然后运行重新加载--DEBUG,这使装载的目录工作。。。
~/projects/tutorials/vagrant\u cassandra(master)$vagrant reload--debug
... 第26309行
信息界面:输出:装载共享文件夹。。。
信息界面:输出:==>默认值:装载共享文件夹。。。
==>默认值:装载共享文件夹。。。
信息界面:detail:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
信息界面:细节:默认值:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
默认值:/vagrant=>/Users/andrew/projects/tutorials/vagrant\u cassandra
…第26573行
调试来宾:搜索cap:mount\u virtualbox\u shared\u文件夹
调试来宾:签入:ubuntu
调试来宾:签入:debian
调试来宾:签入:linux
调试来宾:在linux中找到cap:mount\u virtualbox\u shared\u文件夹
信息来宾:执行功能:mount#u virtualbox_shared_folder[#、“vagrant”、“/vagrant”、{:guestpath=>“/vagrant”、:hostpath=>“/Users/andrew/projects/tutorials/vagrant_cassandra”、:disabled=>false、:owner=>“vagrant”、:group=>“vagrant”}(ubuntu)
调试ssh:正在检查ssh是否已就绪。。。
调试ssh:重新使用ssh连接。
信息ssh:ssh准备好了!
调试ssh:重新使用ssh连接。
infossh:Execute:(sudo=false)
调试ssh:退出状态:0
…第26601行
调试ssh:重新使用ssh连接。
INFO ssh:Execute:mount-t vboxsf-o uid=`id-u vagrant`,gid=`getent group vagrant | cut-d:-f3`vagrant/vagrant(sudo=true)
调试ssh:stderr:stdin:不是tty
调试ssh:退出状态:0
…第26615行
调试ssh:重新使用ssh连接。
INFO ssh:Execute:/sbin/initctl emit--no wait vagrant MOUNTPOINT=/vagrant(sudo=true)
调试ssh:stderr:stdin:不是tty
调试ssh:退出状态:0
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
信息管理员:呼吁采取行动:#
###现在我的项目目录已成功安装到/vagrant
vagrant@precise64:~$ls/流浪汉/
bootstrap.sh文件
vagrant@precise64:~$

我认为这是设置脚本末尾的
重新启动
命令。在注释您的配置脚本步骤时,我做了几次测试运行,它始终正常工作。正如您所指出的,使用配置脚本将失败。在最后删除
重新启动后
,共享文件夹装载似乎总是能正常工作

我发现了这篇博文,这篇博文可能会提供更多信息:。它们描述了在重新启动后重新装载共享文件夹的需要

我不确定你是否需要重新启动。Cassandra和OpsCenter都不需要它,我认为您的资源调配设置可以正常工作

另一个优化
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4568, guest: 80
end
#!/usr/bin/env bash

apt-get update
apt-get install -y python-software-properties
add-apt-repository -y ppa:webupd8team/java
add-apt-repository -y ppa:cassou/emacs
apt-get update
apt-get -y install curl

# install emacs
echo 'INSTALLING EMACS'
apt-get --yes --force-yes install emacs24 emacs24-el emacs24-common-non-dfsg

# install jvm / oracle jdk
# see: https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get
echo 'INSTALLING JAVA'
apt-get -y install default-jre

echo 'INSTALLING ORACLE JDK'
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
apt-get --yes --force-yes install oracle-java7-installer

# install cassandra
echo 'INSTALLING CASSANDRA'
echo "deb http://debian.datastax.com/community stable main" | tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl -L http://debian.datastax.com/debian/repo_key | apt-key add -
apt-get update
apt-get -y install dsc20
service cassandra stop
rm -rf /var/lib/cassandra/data/system/*

# install ops center
echo 'INSTALLING OPS CENTER'
echo "deb http://debian.datastax.com/community stable main" | tee -a /etc/apt/sources.list.d/datastax.community.list
apt-get update
apt-get -y install opscenter
service opscenterd start

# reboot the machine
reboot
INITIAL DEBUG STATEMENTS (starting at line ~2701)
INFO synced_folders: Invoking synced folder enable: virtualbox
 INFO interface: output: Mounting shared folders...
 INFO interface: output: ==> default: Mounting shared folders...
==> default: Mounting shared folders...
 INFO interface: detail: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
 INFO interface: detail:     default: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
    default: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
...line 2997
DEBUG guest: Searching for cap: mount_virtualbox_shared_folder
DEBUG guest: Checking in: ubuntu
DEBUG guest: Checking in: debian
DEBUG guest: Checking in: linux
DEBUG guest: Found cap: mount_virtualbox_shared_folder in linux
 INFO guest: Execute capability: mount_virtualbox_shared_folder [#<Vagrant::Machine: default (VagrantPlugins::ProviderVirtualBox::Provider)>, "vagrant", "/vagrant", {:guestpath=>"/vagrant", :hostpath=>"/Users/andrew/projects/tutorials/vagrant_cassandra", :disabled=>false, :owner=>"vagrant", :group=>"vagrant"}] (ubuntu)
DEBUG ssh: Checking whether SSH is ready...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: SSH is ready!
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:  (sudo=false)
DEBUG ssh: Exit status: 0
...line 3026
INFO ssh: Execute: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty

DEBUG ssh: Exit status: 0
...line 3039
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: /sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=/vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty

DEBUG ssh: Exit status: 0
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::SyncedFolders:0x0000010122eeb0>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::SyncedFolderCleanup:0x000001030d91f8>
 INFO warden: Calling OUT action: #<VagrantPlugins::SyncedFolderNFS::ActionCleanup:0x00000103091998>
 INFO warden: Calling OUT action: #<VagrantPlugins::ProviderVirtualBox::Action::PrepareNFSValidIds:0x0000010303e518>
...line
#################
### AT THIS POINT, MY PROJECT ROOT DIR HAS NOT BEEN MOUNTED TO /vagrant, AS IT IS EMPTY
vagrant@precise64:~$ ls /vagrant/

vagrant@precise64:~$

### THEN RAN A RELOAD --DEBUG, WHICH MAKES THE MOUNTED DIRECTORY WORK...
~/projects/tutorials/vagrant_cassandra(master) $ vagrant reload --debug
... line 26309
INFO interface: output: Mounting shared folders...
 INFO interface: output: ==> default: Mounting shared folders...
==> default: Mounting shared folders...
 INFO interface: detail: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
 INFO interface: detail:     default: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
    default: /vagrant => /Users/andrew/projects/tutorials/vagrant_cassandra
...line 26573
DEBUG guest: Searching for cap: mount_virtualbox_shared_folder
DEBUG guest: Checking in: ubuntu
DEBUG guest: Checking in: debian
DEBUG guest: Checking in: linux
DEBUG guest: Found cap: mount_virtualbox_shared_folder in linux
 INFO guest: Execute capability: mount_virtualbox_shared_folder [#<Vagrant::Machine: default (VagrantPlugins::ProviderVirtualBox::Provider)>, "vagrant", "/vagrant", {:guestpath=>"/vagrant", :hostpath=>"/Users/andrew/projects/tutorials/vagrant_cassandra", :disabled=>false, :owner=>"vagrant", :group=>"vagrant"}] (ubuntu)
DEBUG ssh: Checking whether SSH is ready...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: SSH is ready!
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:  (sudo=false)
DEBUG ssh: Exit status: 0
...line 26601
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty
DEBUG ssh: Exit status: 0
...line 26615
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: /sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=/vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty

DEBUG ssh: Exit status: 0
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::SyncedFolders:0x000001014f48e8>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::SyncedFolderCleanup:0x0000010142caf0>
 INFO warden: Calling OUT action: #<VagrantPlugins::SyncedFolderNFS::ActionCleanup:0x00000101367430>
 INFO warden: Calling OUT action: #<VagrantPlugins::ProviderVirtualBox::Action::PrepareNFSValidIds:0x000001012c5d60>

### NOW MY PROJECT DIR HAS BEEN SUCCESSFULLY MOUNTED TO /vagrant
vagrant@precise64:~$ ls /vagrant/
bootstrap.sh  Vagrantfile
vagrant@precise64:~$