]>
Commit | Line | Data |
---|---|---|
d2e6a577 FG |
1 | # -*- mode: ruby -*- |
2 | # vi: set ft=ruby : | |
3 | ||
4 | require 'yaml' | |
5 | require 'time' | |
6 | VAGRANTFILE_API_VERSION = '2' | |
7 | ||
8 | DEBUG = false | |
9 | ||
11fdf7f2 TL |
10 | global_settings = {} |
11 | if File.symlink?(__FILE__) | |
12 | global_config = File.expand_path( | |
13 | File.join( | |
14 | File.dirname(File.readlink(__FILE__)), | |
15 | 'global_vagrant_variables.yml') | |
16 | ) | |
17 | if File.exist?(global_config) | |
18 | global_settings = YAML.load_file(global_config) | |
19 | end | |
20 | end | |
21 | ||
22 | LIBVIRT_URI = global_settings.fetch('libvirt_uri', '') | |
23 | LIBVIRT_STORAGE_POOL = global_settings.fetch('libvirt_storage_pool', '') | |
24 | ||
d2e6a577 FG |
25 | config_file=File.expand_path(File.join(File.dirname(__FILE__), 'vagrant_variables.yml')) |
26 | settings=YAML.load_file(config_file) | |
27 | ||
28 | LABEL_PREFIX = settings['label_prefix'] ? settings['label_prefix'] + "-" : "" | |
29 | NMONS = settings['mon_vms'] | |
30 | NOSDS = settings['osd_vms'] | |
31 | NMDSS = settings['mds_vms'] | |
32 | NRGWS = settings['rgw_vms'] | |
33 | NNFSS = settings['nfs_vms'] | |
34 | RESTAPI = settings['restapi'] | |
35 | NRBD_MIRRORS = settings['rbd_mirror_vms'] | |
36 | CLIENTS = settings['client_vms'] | |
37 | NISCSI_GWS = settings['iscsi_gw_vms'] | |
38 | PUBLIC_SUBNET = settings['public_subnet'] | |
39 | CLUSTER_SUBNET = settings['cluster_subnet'] | |
40 | BOX = settings['vagrant_box'] | |
41 | CLIENT_BOX = settings['client_vagrant_box'] | |
42 | BOX_URL = settings['vagrant_box_url'] | |
43 | SYNC_DIR = settings['vagrant_sync_dir'] | |
44 | MEMORY = settings['memory'] | |
45 | ETH = settings['eth'] | |
46 | USER = settings['ssh_username'] | |
47 | ||
48 | ASSIGN_STATIC_IP = settings.fetch('assign_static_ip', true) | |
49 | DISABLE_SYNCED_FOLDER = settings.fetch('vagrant_disable_synced_folder', false) | |
50 | DISK_UUID = Time.now.utc.to_i | |
51 | ||
52 | def create_vmdk(name, size) | |
53 | dir = Pathname.new(__FILE__).expand_path.dirname | |
54 | path = File.join(dir, '.vagrant', name + '.vmdk') | |
55 | `vmware-vdiskmanager -c -s #{size} -t 0 -a scsi #{path} \ | |
56 | 2>&1 > /dev/null` unless File.exist?(path) | |
57 | end | |
58 | ||
59 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| | |
60 | config.ssh.insert_key = false # workaround for https://github.com/mitchellh/vagrant/issues/5048 | |
61 | config.ssh.private_key_path = settings['ssh_private_key_path'] | |
62 | config.ssh.username = USER | |
63 | ||
d2e6a577 | 64 | config.vm.provider :libvirt do |lv| |
11fdf7f2 TL |
65 | # When using libvirt, avoid errors like: |
66 | # "CPU feature cmt not found" | |
d2e6a577 | 67 | lv.cpu_mode = 'host-passthrough' |
11fdf7f2 TL |
68 | # set libvirt uri if present |
69 | if not LIBVIRT_URI.empty? | |
70 | lv.uri = LIBVIRT_URI | |
71 | end | |
72 | # set libvirt storage pool if present | |
73 | if not LIBVIRT_STORAGE_POOL.empty? | |
74 | lv.storage_pool_name = LIBVIRT_STORAGE_POOL | |
75 | end | |
d2e6a577 FG |
76 | end |
77 | ||
78 | # Faster bootup. Disables mounting the sync folder for libvirt and virtualbox | |
79 | if DISABLE_SYNCED_FOLDER | |
80 | config.vm.provider :virtualbox do |v,override| | |
81 | override.vm.synced_folder '.', SYNC_DIR, disabled: true | |
82 | end | |
83 | config.vm.provider :libvirt do |v,override| | |
84 | override.vm.synced_folder '.', SYNC_DIR, disabled: true | |
85 | end | |
86 | end | |
87 | ||
88 | (0..CLIENTS - 1).each do |i| | |
89 | config.vm.define "#{LABEL_PREFIX}client#{i}" do |client| | |
90 | client.vm.box = CLIENT_BOX | |
181888fb | 91 | client.vm.hostname = "#{LABEL_PREFIX}client#{i}" |
d2e6a577 FG |
92 | if ASSIGN_STATIC_IP |
93 | client.vm.network :private_network, | |
94 | ip: "#{PUBLIC_SUBNET}.4#{i}" | |
95 | end | |
96 | # Virtualbox | |
97 | client.vm.provider :virtualbox do |vb| | |
98 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
99 | end | |
100 | ||
101 | # VMware | |
102 | client.vm.provider :vmware_fusion do |v| | |
103 | v.vmx['memsize'] = "#{MEMORY}" | |
104 | end | |
105 | ||
106 | # Libvirt | |
107 | client.vm.provider :libvirt do |lv| | |
108 | lv.memory = MEMORY | |
109 | lv.random_hostname = true | |
94b18763 | 110 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
111 | end |
112 | ||
113 | # Parallels | |
114 | client.vm.provider "parallels" do |prl| | |
181888fb | 115 | prl.name = "client#{i}" |
d2e6a577 FG |
116 | prl.memory = "#{MEMORY}" |
117 | end | |
118 | ||
119 | client.vm.provider :linode do |provider| | |
120 | provider.label = client.vm.hostname | |
121 | end | |
122 | end | |
123 | end | |
124 | ||
125 | (0..NRGWS - 1).each do |i| | |
126 | config.vm.define "#{LABEL_PREFIX}rgw#{i}" do |rgw| | |
127 | rgw.vm.box = BOX | |
128 | rgw.vm.box_url = BOX_URL | |
181888fb | 129 | rgw.vm.hostname = "#{LABEL_PREFIX}rgw#{i}" |
d2e6a577 FG |
130 | if ASSIGN_STATIC_IP |
131 | rgw.vm.network :private_network, | |
132 | ip: "#{PUBLIC_SUBNET}.5#{i}" | |
133 | end | |
134 | ||
135 | # Virtualbox | |
136 | rgw.vm.provider :virtualbox do |vb| | |
137 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
138 | end | |
139 | ||
140 | # VMware | |
141 | rgw.vm.provider :vmware_fusion do |v| | |
142 | v.vmx['memsize'] = "#{MEMORY}" | |
143 | end | |
144 | ||
145 | # Libvirt | |
146 | rgw.vm.provider :libvirt do |lv| | |
147 | lv.memory = MEMORY | |
148 | lv.random_hostname = true | |
94b18763 | 149 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
150 | end |
151 | ||
152 | # Parallels | |
153 | rgw.vm.provider "parallels" do |prl| | |
181888fb | 154 | prl.name = "rgw#{i}" |
d2e6a577 FG |
155 | prl.memory = "#{MEMORY}" |
156 | end | |
157 | ||
158 | rgw.vm.provider :linode do |provider| | |
159 | provider.label = rgw.vm.hostname | |
160 | end | |
161 | end | |
162 | end | |
163 | ||
164 | (0..NNFSS - 1).each do |i| | |
165 | config.vm.define "nfs#{i}" do |nfs| | |
166 | nfs.vm.box = BOX | |
167 | nfs.vm.box_url = BOX_URL | |
181888fb | 168 | nfs.vm.hostname = "nfs#{i}" |
d2e6a577 FG |
169 | if ASSIGN_STATIC_IP |
170 | nfs.vm.network :private_network, | |
171 | ip: "#{PUBLIC_SUBNET}.6#{i}" | |
172 | end | |
173 | ||
174 | # Virtualbox | |
175 | nfs.vm.provider :virtualbox do |vb| | |
176 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
177 | end | |
178 | ||
179 | # VMware | |
180 | nfs.vm.provider :vmware_fusion do |v| | |
181 | v.vmx['memsize'] = "#{MEMORY}" | |
182 | end | |
183 | ||
184 | # Libvirt | |
185 | nfs.vm.provider :libvirt do |lv| | |
186 | lv.memory = MEMORY | |
187 | lv.random_hostname = true | |
94b18763 | 188 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
189 | end |
190 | ||
191 | # Parallels | |
192 | nfs.vm.provider "parallels" do |prl| | |
181888fb | 193 | prl.name = "nfs#{i}" |
d2e6a577 FG |
194 | prl.memory = "#{MEMORY}" |
195 | end | |
196 | ||
197 | nfs.vm.provider :linode do |provider| | |
198 | provider.label = nfs.vm.hostname | |
199 | end | |
200 | end | |
201 | end | |
202 | ||
203 | (0..NMDSS - 1).each do |i| | |
204 | config.vm.define "#{LABEL_PREFIX}mds#{i}" do |mds| | |
205 | mds.vm.box = BOX | |
206 | mds.vm.box_url = BOX_URL | |
181888fb | 207 | mds.vm.hostname = "#{LABEL_PREFIX}mds#{i}" |
d2e6a577 FG |
208 | if ASSIGN_STATIC_IP |
209 | mds.vm.network :private_network, | |
210 | ip: "#{PUBLIC_SUBNET}.7#{i}" | |
211 | end | |
212 | # Virtualbox | |
213 | mds.vm.provider :virtualbox do |vb| | |
214 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
215 | end | |
216 | ||
217 | # VMware | |
218 | mds.vm.provider :vmware_fusion do |v| | |
219 | v.vmx['memsize'] = "#{MEMORY}" | |
220 | end | |
221 | ||
222 | # Libvirt | |
223 | mds.vm.provider :libvirt do |lv| | |
224 | lv.memory = MEMORY | |
225 | lv.random_hostname = true | |
94b18763 | 226 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
227 | end |
228 | # Parallels | |
229 | mds.vm.provider "parallels" do |prl| | |
181888fb | 230 | prl.name = "mds#{i}" |
d2e6a577 FG |
231 | prl.memory = "#{MEMORY}" |
232 | end | |
233 | ||
234 | mds.vm.provider :linode do |provider| | |
235 | provider.label = mds.vm.hostname | |
236 | end | |
237 | end | |
238 | end | |
239 | ||
240 | (0..NRBD_MIRRORS - 1).each do |i| | |
241 | config.vm.define "#{LABEL_PREFIX}rbd_mirror#{i}" do |rbd_mirror| | |
242 | rbd_mirror.vm.box = BOX | |
243 | rbd_mirror.vm.box_url = BOX_URL | |
181888fb | 244 | rbd_mirror.vm.hostname = "#{LABEL_PREFIX}rbd-mirror#{i}" |
d2e6a577 FG |
245 | if ASSIGN_STATIC_IP |
246 | rbd_mirror.vm.network :private_network, | |
247 | ip: "#{PUBLIC_SUBNET}.8#{i}" | |
248 | end | |
249 | # Virtualbox | |
250 | rbd_mirror.vm.provider :virtualbox do |vb| | |
251 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
252 | end | |
253 | ||
254 | # VMware | |
255 | rbd_mirror.vm.provider :vmware_fusion do |v| | |
256 | v.vmx['memsize'] = "#{MEMORY}" | |
257 | end | |
258 | ||
259 | # Libvirt | |
260 | rbd_mirror.vm.provider :libvirt do |lv| | |
261 | lv.memory = MEMORY | |
262 | lv.random_hostname = true | |
94b18763 | 263 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
264 | end |
265 | # Parallels | |
266 | rbd_mirror.vm.provider "parallels" do |prl| | |
181888fb | 267 | prl.name = "rbd-mirror#{i}" |
d2e6a577 FG |
268 | prl.memory = "#{MEMORY}" |
269 | end | |
270 | ||
271 | rbd_mirror.vm.provider :linode do |provider| | |
272 | provider.label = rbd_mirror.vm.hostname | |
273 | end | |
274 | end | |
275 | end | |
276 | ||
277 | (0..NISCSI_GWS - 1).each do |i| | |
278 | config.vm.define "#{LABEL_PREFIX}iscsi_gw#{i}" do |iscsi_gw| | |
279 | iscsi_gw.vm.box = BOX | |
280 | iscsi_gw.vm.box_url = BOX_URL | |
181888fb | 281 | iscsi_gw.vm.hostname = "#{LABEL_PREFIX}iscsi-gw#{i}" |
d2e6a577 FG |
282 | if ASSIGN_STATIC_IP |
283 | iscsi_gw.vm.network :private_network, | |
284 | ip: "#{PUBLIC_SUBNET}.9#{i}" | |
285 | end | |
286 | # Virtualbox | |
287 | iscsi_gw.vm.provider :virtualbox do |vb| | |
288 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
289 | end | |
290 | ||
291 | # VMware | |
292 | iscsi_gw.vm.provider :vmware_fusion do |v| | |
293 | v.vmx['memsize'] = "#{MEMORY}" | |
294 | end | |
295 | ||
296 | # Libvirt | |
297 | iscsi_gw.vm.provider :libvirt do |lv| | |
298 | lv.memory = MEMORY | |
299 | lv.random_hostname = true | |
94b18763 | 300 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
301 | end |
302 | # Parallels | |
303 | iscsi_gw.vm.provider "parallels" do |prl| | |
181888fb | 304 | prl.name = "iscsi-gw#{i}" |
d2e6a577 FG |
305 | prl.memory = "#{MEMORY}" |
306 | end | |
307 | ||
308 | iscsi_gw.vm.provider :linode do |provider| | |
309 | provider.label = iscsi_gw.vm.hostname | |
310 | end | |
311 | end | |
312 | end | |
313 | ||
314 | (0..NMONS - 1).each do |i| | |
315 | config.vm.define "#{LABEL_PREFIX}mon#{i}" do |mon| | |
316 | mon.vm.box = BOX | |
317 | mon.vm.box_url = BOX_URL | |
181888fb | 318 | mon.vm.hostname = "#{LABEL_PREFIX}mon#{i}" |
d2e6a577 FG |
319 | if ASSIGN_STATIC_IP |
320 | mon.vm.network :private_network, | |
321 | ip: "#{PUBLIC_SUBNET}.1#{i}" | |
322 | end | |
323 | # Virtualbox | |
324 | mon.vm.provider :virtualbox do |vb| | |
325 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
326 | end | |
327 | ||
328 | # VMware | |
329 | mon.vm.provider :vmware_fusion do |v| | |
330 | v.vmx['memsize'] = "#{MEMORY}" | |
331 | end | |
332 | ||
333 | # Libvirt | |
334 | mon.vm.provider :libvirt do |lv| | |
335 | lv.memory = MEMORY | |
336 | lv.random_hostname = true | |
94b18763 | 337 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
338 | end |
339 | ||
340 | # Parallels | |
341 | mon.vm.provider "parallels" do |prl| | |
181888fb | 342 | prl.name = "mon#{i}" |
d2e6a577 FG |
343 | prl.memory = "#{MEMORY}" |
344 | end | |
345 | ||
346 | mon.vm.provider :linode do |provider| | |
347 | provider.label = mon.vm.hostname | |
348 | end | |
349 | end | |
350 | end | |
351 | ||
352 | (0..NOSDS - 1).each do |i| | |
353 | config.vm.define "#{LABEL_PREFIX}osd#{i}" do |osd| | |
354 | osd.vm.box = BOX | |
355 | osd.vm.box_url = BOX_URL | |
181888fb | 356 | osd.vm.hostname = "#{LABEL_PREFIX}osd#{i}" |
d2e6a577 FG |
357 | if ASSIGN_STATIC_IP |
358 | osd.vm.network :private_network, | |
359 | ip: "#{PUBLIC_SUBNET}.10#{i}" | |
360 | osd.vm.network :private_network, | |
361 | ip: "#{CLUSTER_SUBNET}.20#{i}" | |
362 | end | |
363 | # Virtualbox | |
364 | osd.vm.provider :virtualbox do |vb| | |
365 | # Create our own controller for consistency and to remove VM dependency | |
366 | # but only do it once, otherwise it would fail when rebooting machines. | |
367 | # We assume this has run if one disk was created before | |
368 | unless File.exist?("disk-#{i}-0.vdi") | |
369 | vb.customize ['storagectl', :id, | |
370 | '--name', 'OSD Controller', | |
371 | '--add', 'scsi'] | |
372 | end | |
373 | (0..2).each do |d| | |
374 | vb.customize ['createhd', | |
375 | '--filename', "disk-#{i}-#{d}", | |
11fdf7f2 | 376 | '--size', '12000'] unless File.exist?("disk-#{i}-#{d}.vdi") |
d2e6a577 FG |
377 | vb.customize ['storageattach', :id, |
378 | '--storagectl', 'OSD Controller', | |
379 | '--port', 3 + d, | |
380 | '--device', 0, | |
381 | '--type', 'hdd', | |
382 | '--medium', "disk-#{i}-#{d}.vdi"] | |
383 | end | |
384 | vb.customize ['modifyvm', :id, '--memory', "#{MEMORY}"] | |
385 | end | |
386 | ||
387 | # VMware | |
388 | osd.vm.provider :vmware_fusion do |v| | |
389 | (0..1).each do |d| | |
390 | v.vmx["scsi0:#{d + 1}.present"] = 'TRUE' | |
391 | v.vmx["scsi0:#{d + 1}.fileName"] = | |
392 | create_vmdk("disk-#{i}-#{d}", '11000MB') | |
393 | end | |
394 | v.vmx['memsize'] = "#{MEMORY}" | |
395 | end | |
396 | ||
397 | # Libvirt | |
398 | driverletters = ('a'..'z').to_a | |
399 | osd.vm.provider :libvirt do |lv| | |
400 | # always make /dev/sd{a/b/c/d} so that CI can ensure that | |
401 | # virtualbox and libvirt will have the same devices to use for OSDs | |
402 | (0..3).each do |d| | |
403 | lv.storage :file, :device => "hd#{driverletters[d]}", :path => "disk-#{i}-#{d}-#{DISK_UUID}.disk", :size => '12G', :bus => "ide" | |
404 | end | |
405 | lv.memory = MEMORY | |
406 | lv.random_hostname = true | |
94b18763 | 407 | lv.nic_model_type = "e1000" |
d2e6a577 FG |
408 | end |
409 | ||
410 | # Parallels | |
411 | osd.vm.provider "parallels" do |prl| | |
181888fb | 412 | prl.name = "osd#{i}" |
d2e6a577 FG |
413 | prl.memory = "#{MEMORY}" |
414 | (0..1).each do |d| | |
415 | prl.customize ["set", :id, | |
416 | "--device-add", | |
417 | "hdd", | |
418 | "--iface", | |
419 | "sata"] | |
420 | end | |
421 | end | |
422 | ||
423 | osd.vm.provider :linode do |provider| | |
424 | provider.label = osd.vm.hostname | |
425 | end | |
426 | ||
427 | end | |
428 | end | |
429 | end |