blob: 41b96eb60a733ed67dd5a33711b6ec5d2ef8b18a [file] [log] [blame]
Zsolt Harasztiec7df102016-05-05 13:34:18 -07001# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
4Vagrant.configure(2) do |config|
5
6 if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
alshabibb6ae0862016-08-26 10:55:48 -07007 config.vm.synced_folder "..", "/cord", mount_options: ["dmode=700,fmode=600"]
Zsolt Harasztiec7df102016-05-05 13:34:18 -07008 else
alshabibb6ae0862016-08-26 10:55:48 -07009 config.vm.synced_folder "..", "/cord"
Zsolt Harasztiec7df102016-05-05 13:34:18 -070010 end
11
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -060012 #By default, this variable is set to 2, such that Vagrantfile allows creation
Andy Bavier2505f592016-11-11 15:58:55 -050013 #of compute nodes up to 2. If the number of compute nodes to be supported more
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -060014 #than 2, set the environment variable NUM_COMPUTE_NODES to the desired value
15 #before executing this Vagrantfile.
16 num_compute_nodes = (ENV['NUM_COMPUTE_NODES'] || 2).to_i
17 compute_ip_base = "10.6.1."
18 compute_ips = num_compute_nodes.times.collect { |n| compute_ip_base + "#{n+2}" }
19
Zsolt Harasztiec7df102016-05-05 13:34:18 -070020 config.vm.define "corddev" do |d|
Zsolt Haraszti5b5a42a2016-05-12 22:19:57 -070021 d.ssh.forward_agent = true
Zsolt Harasztiec7df102016-05-05 13:34:18 -070022 d.vm.box = "ubuntu/trusty64"
Andy Bavier5c2e4fa2016-10-31 13:50:52 -040023 d.vm.synced_folder '.', '/vagrant', disabled: true
Zsolt Harasztiec7df102016-05-05 13:34:18 -070024 d.vm.hostname = "corddev"
25 d.vm.network "private_network", ip: "10.100.198.200"
David K. Bainbridge0bdec192016-10-13 18:10:10 -070026 d.vm.provision :shell, path: "scripts/bootstrap_ansible.sh"
27 d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/build/ansible/corddev.yml -c local"
Zsolt Harasztiec7df102016-05-05 13:34:18 -070028 d.vm.provider "virtualbox" do |v|
29 v.memory = 2048
30 end
Andy Bavier5c2e4fa2016-10-31 13:50:52 -040031 d.vm.provider :libvirt do |v, override|
Andy Bavier8ce395f2016-10-14 12:51:30 -040032 v.memory = 2048
Andy Bavier5c2e4fa2016-10-31 13:50:52 -040033 override.vm.synced_folder "..", "/cord", type: "nfs"
Andy Bavier99c11d32016-09-14 17:21:20 -040034 end
Zsolt Harasztiec7df102016-05-05 13:34:18 -070035 end
36
37 config.vm.define "prod" do |d|
38 d.vm.box = "ubuntu/trusty64"
Andy Bavier5c2e4fa2016-10-31 13:50:52 -040039 d.vm.synced_folder '.', '/vagrant', disabled: true
Zsolt Harasztiec7df102016-05-05 13:34:18 -070040 d.vm.hostname = "prod"
Andy Bavier51584d42016-12-02 08:39:13 -050041 d.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: '*'
Zsolt Harasztiec7df102016-05-05 13:34:18 -070042 d.vm.network "private_network", ip: "10.100.198.201"
Andy Bavier2505f592016-11-11 15:58:55 -050043 d.vm.network "private_network",
44 ip: "0.0.0.0",
45 auto_config: false,
46 virtualbox__intnet: "cord-mgmt-network",
47 libvirt__network_name: "cord-mgmt-network",
48 libvirt__forward_mode: "none",
49 libvirt__dhcp_enabled: false
50 d.vm.network "private_network",
51 ip: "10.6.1.201", # To set up the 10.6.1.1 IP address on bridge
52 virtualbox__intnet: "cord-fabric-network",
53 libvirt__network_name: "cord-fabric-network",
54 libvirt__forward_mode: "nat",
55 libvirt__dhcp_enabled: false
David K. Bainbridge6f2cbe72016-08-19 15:48:07 -070056 d.vm.provision :shell, path: "scripts/bootstrap_ansible.sh"
alshabibb6ae0862016-08-26 10:55:48 -070057 d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/build/ansible/prod.yml -c local"
Zsolt Harasztiec7df102016-05-05 13:34:18 -070058 d.vm.provider "virtualbox" do |v|
David K. Bainbridge97b3f2f2016-06-16 18:08:49 -070059 v.memory = 2048
60 end
Andy Bavier2505f592016-11-11 15:58:55 -050061 d.vm.provider :libvirt do |v, override|
Scott Baker6f58e322016-12-09 14:47:07 -080062 v.memory = 24576
Andy Bavier2505f592016-11-11 15:58:55 -050063 v.cpus = 8
64 v.storage :file, :size => '100G', :type => 'qcow2'
Andy Bavier750bc6b2016-12-01 06:53:57 -050065 override.vm.synced_folder "..", "/cord", type: "nfs"
Andy Bavier2505f592016-11-11 15:58:55 -050066 override.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/build/ansible/add-extra-drive.yml -c local"
67 end
David K. Bainbridge97b3f2f2016-06-16 18:08:49 -070068 end
69
David K. Bainbridged506aa62016-06-22 16:06:39 -070070 config.vm.define "switch" do |s|
71 s.vm.box = "ubuntu/trusty64"
72 s.vm.hostname = "fakeswitch"
73 s.vm.network "private_network", ip: "10.100.198.253"
74 s.vm.network "private_network",
75 type: "dhcp",
Andy Bavier2505f592016-11-11 15:58:55 -050076 virtualbox__intnet: "cord-fabric-network",
77 libvirt__network_name: "cord-fabric-network",
David K. Bainbridged506aa62016-06-22 16:06:39 -070078 mac: "cc37ab000001"
79 s.vm.provision :shell, path: "scripts/bootstrap_ansible.sh"
alshabibb6ae0862016-08-26 10:55:48 -070080 s.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/build/ansible/fakeswitch.yml -c local"
David K. Bainbridged506aa62016-06-22 16:06:39 -070081 s.vm.provider "virtualbox" do |v|
David K. Bainbridge97b3f2f2016-06-16 18:08:49 -070082 v.memory = 1048
David K. Bainbridged506aa62016-06-22 16:06:39 -070083 v.name = "fakeswitch"
84 end
85 end
86
alshabibcb8e09b2016-09-06 11:41:29 -070087 config.vm.define "testbox" do |d|
88 d.vm.box = "fgrehm/trusty64-lxc"
89 d.ssh.forward_agent = true
90 d.vm.hostname = "testbox"
91 d.vm.network "private_network", ip: "10.0.3.100", lxc__bridge_name: 'lxcbr0'
92 d.vm.provision :shell, path: "scripts/bootstrap_ansible.sh"
93 d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /cord/build/ansible/corddev.yml -c local"
94 config.vm.provider :lxc do |lxc|
95 # Same effect as 'customize ["modifyvm", :id, "--memory", "1024"]' for VirtualBox
96 lxc.customize 'cgroup.memory.limit_in_bytes', '2048M'
alshabib270d7662016-09-06 14:09:18 -070097 lxc.customize 'aa_profile', 'unconfined'
98 lxc.customize 'cgroup.devices.allow', 'b 7:* rwm'
99 lxc.customize 'cgroup.devices.allow', 'c 10:237 rwm'
alshabibcb8e09b2016-09-06 11:41:29 -0700100 end
David K. Bainbridgea0a36e92016-10-13 18:05:33 -0700101 end
alshabibcb8e09b2016-09-06 11:41:29 -0700102
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600103 num_compute_nodes.times do |n|
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600104 config.vm.define "compute_node-#{n+1}" do |c|
105 compute_ip = compute_ips[n]
106 compute_index = n+1
107 c.vm.synced_folder '.', '/vagrant', disabled: true
108 c.vm.communicator = "none"
109 c.vm.hostname = "computenode-#{compute_index}"
Andy Bavier2505f592016-11-11 15:58:55 -0500110 c.vm.network "private_network",
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600111 adapter: 1,
Andy Bavier2505f592016-11-11 15:58:55 -0500112 ip: "0.0.0.0",
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600113 auto_config: false,
Andy Bavier2505f592016-11-11 15:58:55 -0500114 virtualbox__intnet: "cord-mgmt-network",
115 libvirt__network_name: "cord-mgmt-network"
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600116 c.vm.network "private_network",
117 adapter: 2,
Andy Bavier2505f592016-11-11 15:58:55 -0500118 ip: "#{compute_ip}",
119 auto_config: false,
120 virtualbox__intnet: "cord-fabric-network",
121 libvirt__network_name: "cord-fabric-network",
122 libvirt__forward_mode: "nat",
123 libvirt__dhcp_enabled: false
124 c.vm.provider :libvirt do |v|
125 v.memory = 8192
126 v.cpus = 4
127 v.machine_virtual_size = 100
128 v.storage :file, :size => '100G', :type => 'qcow2'
129 v.boot 'network'
130 v.boot 'hd'
131 v.nested = true
132 end
133 c.vm.provider "virtualbox" do |v, override|
134 override.vm.box = "clink15/pxe"
135 v.memory = 1048
136 v.gui = "true"
Srikanth Vavilapallib1c4da02016-11-17 15:24:28 -0600137 end
Andy Bavier99c11d32016-09-14 17:21:20 -0400138 end
139 end
140
Zsolt Harasztiec7df102016-05-05 13:34:18 -0700141 if Vagrant.has_plugin?("vagrant-cachier")
142 config.cache.scope = :box
143 end
144
145end