Бродячая терминология конфигурации


TL; DR; может ли кто-нибудь помочь мне понять разницу между этими "именами", определенными в файле Vagrantfile?

  1. config.vm.define "worker"
  2. box.vm.box = "ots-box"
  3. box.vm.host_name = "worker"
  4. 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 4

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 будет разрешена с тем же значением. В качестве примера, из следующего Vagrantfile
Vagrant.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), это довольно хорошо объясняется из следующего ответ