Сетевые настройки

Конечно, одна из важнейших настроек виртуальной машины - конфигурация сетевых интерфейсов. За сетевые настройки отвечает параметр config.vm.network. Вагрант предлагает два варианта на выбор: работа в сети, ограниченной хост-машиной, или подключение через сетевой мост.
В первом случае мы явно задаем IP машины, а также можем опционально указать маску сети (по умолчанию используется 255.255.255.0). В таком случае конфиг приобретает вид:
Vagrant: :Config.run do |config| config.vm.box = "precise64"
config.vm.provision :shell, :path => "install_redis.sh" end
Во втором случае машина получает IP по DHCP и становится полноценным членом сети, в которой расположена и хост-машина. Если на хост-машине присутствует несколько сетевых интерфейсов, то мы можем указать, который именно использовать для моста. Для вывода списка имен сетевых интерфейсов воспользуемся командой:
~$ VBoxManage list bridgedifs | grep AName Name: enl: Wi-Fi (AirPort)
Name: en0: Ethernet
Name: p2pe
И, соответственно, конфигурация примет вид:
Vagrant: :Config.run do |config| config.vm.box = "precise64"
config.vm.provision:shellj :path => "install_redis.sh" config.vm.network :bridged, :bridge => "enl: Wi-Fi (AirPort)" end
Кроме того, Vagrant позволяет также пробрасывать порты. Вот, например, такой Vagrantfile позволяет пробрасывать с 6379-го порта гостевой машины, на который по умолчанию вешается редис, на 8765-й на хост-машине.
Vagrant::Config.run do |configj config.vm.box = "precise64"
config.vm.provision :shell, :path => "install_redis.sh" config.vm.forward_port 6379, 8765 end
Какой вариант лучше - выбор за тобой, но в любом случае наша виртуалка уже вполне может выполнять роль сервера базы данных, на который можно зайти либо с хост-машины, либо с другой виртуалки.
Несколько виртуальных машин
Кстати, в одном Vagrant-файле можно объявить сразу несколько виртуальных машин с различными настройками. Как? Я думаю, следующий пример скажет сам за себя:
Vagrant::Config.run do |config|
config.vm.define :web do |web_config|
web_config.vm.box = "web"
web_config.vm.forward_port 80, 8080 end
config.vm.define :db do |db_config|
db_config.vm.box = "db"
db_config.vm.forward_port 3306, 3306 end end
Более того, запускать и пересоздавать виртуалки можно по отдельности, добавляя имя машины после соответствующей команды:
$ vagrant up web $ vagrant reload db