From dba31833a4f4ab1001eb68342ffa898252e704f4 Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Wed, 26 May 2021 07:59:47 +0100 Subject: [PATCH 1/2] add support for boot 'network' from a vagrant public_network when use a public_network in vagrant, this is how libvirt domain xml looks like (notice that the interface type is 'direct'):
--- lib/vagrant-libvirt/action/set_boot_order.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/vagrant-libvirt/action/set_boot_order.rb b/lib/vagrant-libvirt/action/set_boot_order.rb index c5997f9..7da5d87 100644 --- a/lib/vagrant-libvirt/action/set_boot_order.rb +++ b/lib/vagrant-libvirt/action/set_boot_order.rb @@ -86,9 +86,13 @@ module VagrantPlugins def search_network(nets, xml) str = '/domain/devices/interface' - str += "[(@type='network' or @type='udp' or @type='bridge')" + str += "[(@type='network' or @type='udp' or @type='bridge' or @type='direct')" unless nets.empty? - str += " and source[@network='#{nets.first['network']}']" + net = nets.first + network = net['network'] + dev = net['dev'] + str += " and source[@network='#{network}']" if network + str += " and source[@dev='#{dev}']" if dev end str += ']' @logger.debug(str) From c96364575af6b4690358cbd659b80ac16cc23ddc Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Thu, 27 May 2021 07:40:25 +0100 Subject: [PATCH 2/2] add pxe boot public_network example --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 6cb9124..6a26af9 100644 --- a/README.md +++ b/README.md @@ -1389,6 +1389,24 @@ Name of network "foreman_managed" is key for define boot order end ``` +An example VM that is PXE booted from the `br1` device (which must already be configured in the host machine), and if that fails, is booted from the disk: + +```ruby +Vagrant.configure("2") do |config| + config.vm.define :pxeclient do |pxeclient| + pxeclient.vm.network :public_network, + dev: 'br1', + auto_config: false + pxeclient.vm.provider :libvirt do |domain| + boot_network = {'dev' => 'br1'} + domain.storage :file, :size => '100G' + domain.boot boot_network + domain.boot 'hd' + end + end +end +``` + ## SSH Access To VM vagrant-libvirt supports vagrant's [standard ssh