github.phpd.cn/cilium/cilium@v1.6.12/test/Vagrantfile (about)

     1  # -*- mode: ruby -*-
     2  # vi: set ft=ruby
     3  Vagrant.require_version ">= 2.2.0"
     4  
     5  # The source of truth for vagrant box versions.
     6  # Sets SERVER_BOX, SERVER_VERSION, NETNEXT_SERVER_BOXET and NEXT_SERVER_VERSION
     7  # Accepts overrides from env variables
     8  require_relative '../vagrant_box_defaults.rb'
     9  $SERVER_BOX = (ENV['SERVER_BOX'] || $SERVER_BOX)
    10  $SERVER_VERSION= (ENV['SERVER_VERSION'] || $SERVER_VERSION)
    11  $NETNEXT_SERVER_BOX = (ENV['NETNEXT_SERVER_BOX'] || $NETNEXT_SERVER_BOX)
    12  $NETNEXT_SERVER_VERSION= (ENV['NETNEXT_SERVER_VERSION'] || $NETNEXT_SERVER_VERSION)
    13  
    14  $BUILD_NUMBER = ENV['BUILD_NUMBER'] || "0"
    15  $JOB_NAME = ENV['JOB_BASE_NAME'] || "LOCAL"
    16  $K8S_VERSION = ENV['K8S_VERSION'] || "1.16"
    17  $K8S_NODES = (ENV['K8S_NODES'] || "2").to_i
    18  $NFS = ENV['NFS']=="1"? true : false
    19  $IPv6=(ENV['IPv6'] || "0")
    20  $CONTAINER_RUNTIME=(ENV['CONTAINER_RUNTIME'] || "docker")
    21  $CNI_INTEGRATION=(ENV['CNI_INTEGRATION'] || "")
    22  
    23  # RAM and CPU settings
    24  $MEMORY = (ENV['MEMORY'] || "4096").to_i
    25  $CPU = (ENV['CPUS'] || "2").to_i
    26  
    27  if ENV['NETNEXT'] == "true"
    28      $SERVER_BOX = $NETNEXT_SERVER_BOX
    29      $SERVER_VERSION = $NETNEXT_SERVER_VERSION
    30  end
    31  
    32  ENV["VAGRANT_DEFAULT_PROVIDER"] = "virtualbox"
    33  Vagrant.configure("2") do |config|
    34  
    35      config.vm.define "runtime" do |server|
    36          server.vm.provider "virtualbox" do |vb|
    37              vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
    38              vb.cpus = $CPU
    39              vb.memory= $MEMORY
    40              vb.linked_clone = true
    41              vb.default_nic_type = "virtio"
    42              # Prevent VirtualBox from interfering with host audio stack
    43              vb.customize ["modifyvm", :id, "--audio", "none"]
    44          end
    45  
    46          server.vm.box =  "#{$SERVER_BOX}"
    47          server.vm.box_version = $SERVER_VERSION
    48          server.vm.boot_timeout = 600
    49          server.vm.hostname = "runtime"
    50  
    51          # This network is only used by NFS
    52          server.vm.network "private_network", type: "dhcp"
    53          server.vm.synced_folder "../", "/home/vagrant/go/src/github.com/cilium/cilium",
    54              nfs: $NFS
    55  
    56          # Provision section
    57          server.vm.provision :shell,
    58              :inline => "sed -i 's/^mesg n$/tty -s \\&\\& mesg n/g' /root/.profile"
    59          server.vm.provision "file", source: "provision/", destination: "/tmp/"
    60          server.vm.provision "shell" do |sh|
    61              sh.path = "./provision/runtime_install.sh"
    62              sh.env = {}
    63          end
    64      end
    65  
    66      (1..$K8S_NODES).each do |i|
    67          config.vm.define "k8s#{i}-#{$K8S_VERSION}" do |server|
    68              server.vm.provider "virtualbox" do |vb|
    69                  vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
    70                  vb.cpus = $CPU
    71                  vb.memory= $MEMORY
    72                  vb.linked_clone = true
    73                  vb.default_nic_type = "virtio"
    74                  # Prevent VirtualBox from interfering with host audio stack
    75                  vb.customize ["modifyvm", :id, "--audio", "none"]
    76                  # Use serial ports if the VM is no longer accessible via SSH
    77                  vb.customize ["modifyvm", :id, "--uart1", "0x3F8", "4"]
    78                  vb.customize ["modifyvm", :id, "--uartmode1", "server", "k8s#{i}-#{$K8S_VERSION}-ttyS0.sock"]
    79              end
    80  
    81              server.vm.box =  "#{$SERVER_BOX}"
    82              server.vm.box_version = $SERVER_VERSION
    83              server.vm.hostname = "k8s#{i}"
    84              server.vm.boot_timeout = 600
    85              server.vm.network "private_network",
    86                  ip: "192.168.36.1#{i}",
    87                  virtualbox__intnet: "cilium-k8s#{$BUILD_NUMBER}-#{$JOB_NAME}-#{$K8S_VERSION}"
    88  
    89              # @TODO: Clean this one when https://github.com/hashicorp/vagrant/issues/9822 is fixed.
    90              server.vm.provision "ipv6-config",
    91                  type: "shell",
    92                  run: "always",
    93                  inline: "ip -6 a a fd04::1#{i}/96 dev enp0s8 || true"
    94  
    95              # This network is only used by NFS
    96              server.vm.network "private_network", type: "dhcp"
    97              server.vm.synced_folder "../", "/home/vagrant/go/src/github.com/cilium/cilium",
    98                  nfs: $NFS
    99              # Provision section
   100              server.vm.provision :shell,
   101                  :inline => "sudo sysctl -w net.ipv6.conf.all.forwarding=1"
   102              server.vm.provision :shell,
   103                  :inline => "sed -i 's/^mesg n$/tty -s \\&\\& mesg n/g' /root/.profile"
   104              server.vm.provision "file", source: "provision/", destination: "/tmp/"
   105              server.vm.provision "shell" do |sh|
   106                  sh.path = "./provision/registry.sh"
   107              end
   108              server.vm.provision "shell" do |sh|
   109                  sh.path = "./provision/k8s_install.sh"
   110                  sh.args = [
   111                      "k8s#{i}", "192.168.36.1#{i}", "#{$K8S_VERSION}",
   112                      "#{$IPv6}", "#{$CONTAINER_RUNTIME}", "#{$CNI_INTEGRATION}"]
   113              end
   114          end
   115      end
   116  end