Vagrant как заставить libvirt использовать другой сетевой интерфейс

Я использую Vagrant для определения машины Fedora со статическим IP-адресом.

Vagrant.configure("2") do |config|
  config.vm.network :public_network, :bridge => 'enp0s25', :dev => 'enp0s25'
  config.vm.network "private_network", ip: "192.168.122.1"
  config.vm.provision "shell", inline: "ifconfig"
  config.vm.define "fedora1" do |fedora1|
    fedora1.vm.box = "fedora/23-cloud-base"
  end
end

Проблема в том, что если я пытаюсь подготовить виртуальную машину, возникает ошибка:

Не удалось выполнить вызов virDomainCreateWithFlags: невозможно получить индекс для интерфейса eth0: нет такого устройства

На самом деле у меня нет eth0 на моей Fedora 21, но

enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.71.85  netmask 255.255.255.0  broadcast 10.1.71.255
        inet6 fe80::6af7:28ff:fef3:b97d  prefixlen 64  scopeid 0x20<link>
        ether 68:f7:28:f3:b9:7d  txqueuelen 1000  (Ethernet)
        RX packets 1753807  bytes 1271298509 (1.1 GiB)
        RX errors 0  dropped 26  overruns 0  frame 0
        TX packets 771439  bytes 73736761 (70.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xe1200000-e1220000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 1450325  bytes 565140300 (538.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1450325  bytes 565140300 (538.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:5f:e6:70  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.121.1  netmask 255.255.255.0  broadcast 192.168.121.255
        ether 52:54:00:fe:98:b5  txqueuelen 0  (Ethernet)
        RX packets 3673  bytes 403458 (394.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2367  bytes 381415 (372.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Добавление строки:

config.vm.network :public_network, :bridge => 'enp0s25', :dev => 'enp0s25'

не произвело никакого эффекта. Есть ли какое-нибудь решение (кроме восстановления старого интерфейса eth0)?


person Francesco Marchioni    schedule 16.02.2016    source источник
comment
Поздно на вечеринку, но вы можете открыть Virt Manager и вручную изменить интерфейс на «enp0s25». После этого up должно работать нормально.   -  person Mohnish    schedule 05.07.2019


Ответы (1)


Сегодня я столкнулся с той же проблемой, и решение было таким же простым, как просто уничтожить бродячую машину после внесения изменений в бродячий файл. vagrant destroy fedora1 && vim Vagrantfile && vagrant up fedora1 --provider libvirt

$ vagrant plugin list
fog-libvirt (0.0.3)
  - Version Constraint: 0.0.3
vagrant-libvirt (0.0.32)

$ vagrant version
Installed Version: 1.6.5

Надеюсь, это поможет вам.

person Andrey Arapov    schedule 26.03.2016
comment
Благодарю вас! Я пытался изменить параметры config.vm.network полдюжины раз на разные настройки только для того, чтобы понять, что ничего не применяется, пока вы сначала не запустите vagrant destroy. - person Brennan Cheung; 13.10.2019