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