2014-01-29 4 views
3

У меня есть несколько каталогов с разными историями Mercurial, над которыми я работаю параллельно. Все они имеют один и тот же Vagrantfile, поэтому было бы естественно использовать только один экземпляр для всех из них. Но когда я запускаю «vagrant up» в новом каталоге, он начинается с привязки существующей виртуальной машины, настройки среды и т. Д. Как поделиться экземпляром Vagrant между разными каталогами?Поделитесь одним экземпляром бродяг между разными каталогами

UPDATE: моя структура каталогов:

\ 
Vagrantfile 
puppet 
    *.pp 
support 
    nginx.conf 
    uwsgi.development.ini 
other_repo_related_files_and_dirs 
+0

Не могли бы вы перечислить структуру своего каталога? – cocheese

ответ

1

Просто мысли вслух здесь. Не уверен, что это решение, отвечающее вашим требованиям.

Если настройка структуры каталогов, как этот

/Main 
    /projects 
    /mercurial_history_1 
    /mercurial_history_2 
    /mercurial_history_3 
    /puppet 
    /modules 
    /manifests 
    default.pp 
    Vagrantfile 

Я не уверен, какие проекты вы работаете, но если вы работаете на сервере Apache, например. Вы можете указать отдельный призрак для каждого проекта меркурации внутри виртуальной машины. Таким образом, вы можете указать DocumentRoot на конкретный проект меркуриона.

Для этого решения вы должны добавить следующую строку в Vagrantfile

config.vm.network "private_network", ip: "22.22.22.11" <- Just an example IP 

Тогда на вас хост-машине, вы можете обновить файл хостов с IP и соответствующим vhostname имясервера. Это немного больше работы, но вы можете добавить ВХосты используя Provisioner, чтобы сделать жизнь проще;)

Таким образом, у вас есть только один работает VM, которая работает Аль ваши ртутные проекты

5

Ну, если вы хотите поделиться некоторые каталоги с тем же экземпляром Vagrant, вы можете настроить Vagrantfile.

Это пример с двумя VM (приложения и веб), используя же коробку (убунту-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, вы можете видеть каждую папку. Это приложение.

[email protected]:~/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 
[email protected]:~$ cd /app_config/ 
[email protected]:/app_config$ ls 
app_config_file 

Это веб-машина.

[email protected]:~/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 
[email protected]:~$ cd /web_config/ 
[email protected]:/web_config$ ls 
web_config_file 
[email protected]:/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* 

Я надеюсь, что это поможет вам.

Смежные вопросы