Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

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:

      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

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

     

  • No labels