Бродячая терминология конфигурации
TL; DR; может ли кто-нибудь помочь мне понять разницу между этими "именами", определенными в файле Vagrantfile?
config.vm.define "worker"
box.vm.box = "ots-box"
box.vm.host_name = "worker"
vb.name = "barhost"
Пытаясь изменить имя хоста экземпляра vagrant, который у меня был, я заблудился в синтаксисе Vagrantfile. Теперь я успешно изменил имя хоста, но некоторые другие вещи (сеть) не работают. Я подозреваю, что я изменил что-то, что привело бродягу к настройке коробки - это особым образом, что и вызвало этот вопрос.
Vagrant.configure("2") do |config|
config.vm.define "worker".to_sym do |box|
box.vm.box = "ots-box"
box.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box"
box.vm.host_name = "worker"
end
Я полагаю, что это не имеет значения, но я пытаюсь создать Ubuntu box на Mac El-capitan с Oracle VirtualBox и vagrant версии 1.7.4.
Документация гласит:: конфиг.виртуальная память.коробка-это настраивает, с какой коробкой машина будет сталкиваться. Значение здесь должно быть именем установленной коробки или сокращенным именем коробки в Атласе HashiCorp.
Пример здесь вводит другой термин vb.name
:
Vagrant.configure('2') do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.define "foohost" do |foohost|
end
config.vm.provider :virtualbox do |vb|
vb.name = "barhost"
end
end
1 ответ:
Я постараюсь ответить по пунктам:
Сначала следующий синтаксис
Vagrant.configure("2") do |config| config.vm.define "worker".to_sym do |box| box.vm.box = "ots-box" box.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box" box.vm.host_name = "worker" end
В основном используется, если у вас запущено несколько виртуальных машин (https://docs.vagrantup.com/v2/multi-machine/) поэтому вам нужно определить имя для виртуальной машины, в вашем случае
worker
поэтому в следующем блоке все параметры будут установлены для виртуальной машиныworker
и чтобы сделать синтаксис ruby счастливым, вам нужно определить имя переменной (box
)Таким образом, если у вас есть одна виртуальная машина в вашем Vagrantfile, вам не нужно этот синтаксис, вы можете просто иметь
Во-вторых,Vagrant.configure("2") do |config| config.vm.box = "ots-box" config.vm.box_url = "http://testing.xxx.com.s3.amazonaws.com/ots-fe.box" config.vm.hostname = "worker" end
config/box.vm.box
указывает на бродячую коробку Это очень важная концепция бродяги, поскольку каждая виртуальная машина, которую вы будете вращать, должна быть создана против существующей коробки. Вы можете скачать box из интернета (vagrant atlas, http://www.vagrantbox.es/) или сделайте коробку сами. Вы можете просмотреть доступные коробки, установленные на вашем компьютере, запустивvagrant box list
. Если в поле установить в ваш файл Vagrantfile не доступен в окне, залет будет попробуйте скачать (поэтому, если вы укажете что-то вродеubuntu/trusty64
, Даже если вы его не устанавливали, vagrant загрузит его из https://atlas.hashicorp.com/ubuntu/boxes/trusty64 , предполагая, что он доступен для вашего провайдера)В-третьих, переменная
config/box.vm.hostname
будет интересующей вас переменной (не hostname vs host_name) из docТаким образом, если вы установите эту переменную в вашем Vagrantfile и загрузите машину, переменнаяКонфигурация.виртуальная память.имя хоста-имя хоста, которое должна иметь машина. Значения по умолчанию: нуль. Если ноль, то бродяга не будет управлять именем хоста. Если установлено в строку, имя хоста будет установлено при загрузке.
hostname
в ubuntu будет разрешена с тем же значением. В качестве примера, из следующего VagrantfileVagrant.configure(2) do |config| ... config.vm.box = "ubuntu/trusty64" config.vm.hostname = "ubuntu" ...
Из виртуальной машины я получаю
fhenri@machine:~/project/examples/vagrant/ubuntu$ vagrant ssh Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-virtual x86_64) * Documentation: https://help.ubuntu.com/ Last login: Tue Jan 5 10:21:54 2016 from 172.16.42.1 vagrant@ubuntu:~$ hostname ubuntu
Наконец, name topic,
config/box.vm.name
будет использоваться для имени виртуальной машины от провайдера (в вашем случае VirtualBox), это довольно хорошо объясняется из следующего ответ