我有一些具有不同Mercurial历史的目录,我正在并行处理。它们都具有相同的Vagrant文件,因此对所有这些文件只使用一个实例是很自然的。 但是当我在新目录中运行“vagrant up”时,它会从链接现有VM,设置环境等开始。 如何在不同目录之间共享Vagrant实例?
更新:我的目录结构:
\
Vagrantfile
puppet
*.pp
support
nginx.conf
uwsgi.development.ini
other_repo_related_files_and_dirs
答案 0 :(得分:5)
好吧,如果你想与同一个Vagrant实例共享一些目录,你可以配置Vagrantfile。
这是一个示例有两个VM(应用和网络),使用相同的框(ubuntu-12.04)和相同的Vagrantfile 。每个实例都有两个文件夹(VM的一个文件夹)。
# -*- 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.define 'app' do |app_config|
app_config.vm.box = 'ubuntu-12.04'
app_config.vm.host_name = 'app'
app_config.vm.network "private_network", ip: "192.168.33.33"
app_config.vm.synced_folder "app_config", "/app_config"
end
config.vm.define 'web' do |web_config|
web_config.vm.box = 'ubuntu-12.04'
web_config.vm.host_name = 'web'
web_config.vm.network "private_network", ip: "192.168.33.34"
web_config.vm.synced_folder "web_config", "/web_config"
end
end
应用计算机有一个 app_config 文件夹,网络计算机有一个 web_config 文件夹(这些文件夹是在Vagrantfile文件的同一级别。)。
使用vagrant ssh命令进入每个VM时,您可以看到每个文件夹。 这是应用程序机器。
roberto@rcisla-pc:~/Desktop/multiple$ vagrant ssh app
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Mon Jan 27 13:46:36 2014 from 10.0.2.2
vagrant@app:~$ cd /app_config/
vagrant@app:/app_config$ ls
app_config_file
这是进入网络机器。
roberto@rcisla-pc:~/Desktop/multiple$ vagrant ssh web
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)
* Documentation: https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Mon Jan 27 13:47:12 2014 from 10.0.2.2
vagrant@web:~$ cd /web_config/
vagrant@web:/web_config$ ls
web_config_file
vagrant@web:/web_config$
这是我的目录的结构。
.
├── **app_config**
│ └── *app_config_file*
├── attributes
├── Berksfile
├── Berksfile.lock
├── chefignore
├── definitions
├── files
│ └── default
├── Gemfile
├── libraries
├── LICENSE
├── metadata.rb
├── providers
├── README.md
├── recipes
│ └── default.rb
├── resources
├── templates
│ └── default
├── test
│ └── integration
│ └── default
├── Thorfile
├── Vagrantfile
├── Vagrantfile~
└── **web_config**
└── *web_config_file*
我希望这对你有所帮助。
答案 1 :(得分:1)
在这里大声思考。不确定它是否是满足您需求的解决方案。
如果你设置这样的目录结构
/Main
/projects
/mercurial_history_1
/mercurial_history_2
/mercurial_history_3
/puppet
/modules
/manifests
default.pp
Vagrantfile
我不确定您正在运行哪种项目,但是如果您正在运行apache webserver。您可以为VM中的每个mercurial项目指定单独的vhost。因此,您可以将DocumentRoot指向特定的mercurial项目。
对于此解决方案,您必须在Vagrantfile中添加以下行
config.vm.network "private_network", ip: "22.22.22.11" <- Just an example IP
然后在您的主机上,您可以使用IP和相应的vhostname servername更新hosts文件。这是一个更多的工作,但你可以使用配置器添加虚拟主机,使生活更轻松;)
通过这种方式,您只运行一个运行您的mercurial项目的VM