
СОфициальная Ubuntu 16.04 LTS (Xenial Xerus)Образ Vagrant box (на VirtualBox) У меня проблемы с базовыми сетевыми настройками:
Мой Vagrantfile
:
Vagrant.configure(2) do |config|
config.vm.box = 'ubuntu/xenial64'
config.vm.define "xenial" do |server|
server.vm.network "private_network", ip: "192.168.10.10"
end
end
vagrant up
результат:
==> xenial: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifdown eth1 2> /dev/null
Stdout from the command:
Stderr from the command:
sudo: unable to resolve host ubuntu-xenial
mesg: ttyname failed: Inappropriate ioctl for device
Оставить настройку DHCP также не получится:
server.vm.network "private_network", type: "dhcp"
В то же время указанные выше конфигурации работают ubuntu/trusty64
и для ubuntu/wily64
неофициальныхgbarbieru/xenial
.
Попытка выполнить команду /sbin/ifdown eth1 2> /dev/null
не дала результатов, так как интерфейс имеет другую схему именования (основная — enp0s3
).
Я что-то упускаю из виду или коробка просто сломана?
решение1
Проблема, похоже, будет решена в следующей версии Vagrant:https://github.com/mitchellh/vagrant/issues/7155
Я попробовал еще одну коробку от Джеффа Гирлингаhttps://twitter.com/geerlingguy/status/723571293174427648?lang=frи это сработало для меня идеально. Джефф проделал большую работу над Vagrant/Ansible, так что я думаю, это лучшее решение перед выпуском следующей версии Vagrant
решение2
Несмотря на то ubuntu/xenial64
, что это официальная коробка Ubuntu, онаесть некоторые проблемыотносительно конфигурации сети и не является проблемой Vagrant, как объясняется в ответе @Maxime.
Поэтому, как упоминается в проблеме, предпочтительнее использоватьбентоbox (поддерживаемый сообществом и Opscode Chef в качестве лидера проекта), который в данном случае будет bento/ubuntu-16.04
.
решение3
Проблема связана с соглашением об именовании сетевых интерфейсов в новых версиях Ubuntu. Ваша Vagrant VM не была подготовлена, но вы все равно можете подключиться к ней по ssh ( vagrant ssh
). Там вы увидите, что нет названного интерфейса eth1
(можно использовать ifconfig -a
или ip link
). В моем случае я вижу интерфейсы enp0s3
и enp0s8
.
Как упоминалось ввыпуск 6871
... нам нужен способ обнаружения интерфейсов вместо статического назначения...
... или убедить Ubuntu изменить свой облачный образ.
На данный момент однозначного решения не существует.
решение4
Я столкнулся с проблемой, аналогичной той, что обсуждалась в первоначальном вопросе.
Я использую Vagrant 1.8.1. и использование ubuntu/trusty64 box работало просто отлично, однако, когда я попытался использовать ubuntu/xenial64 box, я столкнулся с той же проблемой. Комментарийв этой темепривели меня к решению, которое, кажется, сработало.
Я изменил строку.
config.vm.network "private_network", ip: "192.168.33.10"
в Vagrantfile для
config.vm.network "private_network", ip: "192.168.33.10", auto_config: false