Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Step by step guide in order to get beaker-vagrant to work with the vagrant-libvirt plugin. It changes things to allow the vagrant-libvirt plugin to function by accessing the private dhcp network and allowing the plugin to perform an ip masquerade. This in essence is exactly the same functionality as virtualbox’s networking.

This guide assumes you have the following environment set up for ruby: https://simp.readthedocs.io/en/master/getting_started_guide/Installation_Options/ISO/ISO_Build/Environment_Preparation.html

This guide also assumes you have the following environment set up for vagrant and libvirt: https://www.onyxpoint.com/blog/vagrant-libvirt-on-centos-7/

Instructions

  1. export BEAKER_HYPERVISOR='vagrant_libvirt'

  2. bundle install

  3. vim ~/.rvm/gems/ruby-2.5.7/gems/beaker-vagrant-0.6.6/lib/beaker/hypervisor/vagrant_libvirt.rb

  4. Replace the vagrant_libvirt.rb private_network_generator and shell_provisioner_generator functions with the following:

    Code Block
    languageruby
      def private_network_generator(host)
        #if 'dhcp_ip' not provided, use the default example IP.
        #:libvirt__network_address is a portion of the private network options
        # and here is the relevant documentation:
        #Used only when :type is set to dhcp. Only /24 subnet is supported.
        #Default is 172.28.128.0
        unless host['dhcp_ip'].nil? || host['dhcp_ip'].empty?
          dhcp_ip = host['dhcp_ip']
        else
          dhcp_ip = "172.28.128.0"
        end
        private_network_string = "    v.vm.network :private_network, :type => \"dhcp\", :libvirt__network_address => \"#{dhcp_ip}\"\n"
      end
      
      def shell_provisioner_generator(provisioner_config)
        #hacky fix, but the default vagrant file generator overlays the route
        #by default to not handle the ip masquerade that the vagrant-libvirt
        #will provide. To work around this, by deleting the default route whenever
        #the vagrant libvirt vm comes up, it will correct itself and then the ip
        #masquerade will work as intended.
        unless provisioner_config.nil?
          shell_provisioner_string = "    v.vm.provision 'shell', :inline => 'ip route del default', :run => 'always'\n"
        else
          shell_provisioner_string = "    v.vm.provision 'shell', :inline => 'ip route del default', :run => 'always'\n"
        end
      end
  5. bundle exec rake beaker:suites

  6. You should see vagrant come up via libvirt and the acceptance tests pass.

     

Info

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@a51
sortmodified
showSpacefalse
reversetrue
typepage
cqllabel = "kb-how-to-article" and type = "page" and space = "SD"
labelskb-how-to-article

...