VM acting as DHCP/PXE server in virtual network?

I’m working on a proof of concept for running Stacki, a DHCP/PXE server which serves out Kickstart PXE boot configurations to VMs within a given subnet. What I’d like to do is setup at least two libvirt VMs, where one is the Stacki frontend managing DHCP for the network and the other is an empty VM which will receive boot configuration from Stacki.

I assume that I at least need the following things:

  1. A bridged virtual NAT network so that Stacki itself and its managed VMs can NAT out to the internet and to other physical machines in the local network.
  2. Stacki must be the DHCP server managing that bridged virtual NAT network and assigning IP addresses.
  3. Stacki must have a static IP address.

Is there a way to disable DHCP in the network and assign my Stacki frontend a static IP address alone? Is there anything I’ve overlooked that I need to setup?


I wouldn’t bother running a DHCP server running on the NAT network. In a VM scenario, it’s a lot cleaner to just to run a second network for all Stacki communication, and setup your routing to go back out the NAT network, if necessary.

We (the Stacki devs) went ahead and created a Stacki Vagrant box to make this a little bit easier. It doesn’t perfectly address OP’s question (relies on VirtualBox at the moment) but it should solve the issue of wanting to “test drive” Stacki in a VM, against other VMs.

The Vagrantfile and most (see issue #2 in the repo) of what you need to re-build the box yourself is on GitHub at StackiUp. We’re also hosting a Vagrantbox on S3. Just clone that repo and run “vagrant box add http://stacki.s3.amazonaws.com/public/vm/vagrant/stackibox.json && vagrant up”.

One last note to clear up some misunderstanding in another answer, Stacki is open source and free on GitHub (under a BSD license). We also host ISOs on our website so you don’t have to build it yourself. The pro version certainly isn’t necessary to do bare-metal provisioning. The free Stacki is almost trivial to extend and add say, Ansible, to handle post-installation provisioning.

Source : Link , Question Author : Naftuli Kay , Answer Author : Bill Sanders

Leave a Comment