]> git.proxmox.com Git - ceph.git/blame - ceph/src/ceph-volume/ceph_volume/tests/functional/Vagrantfile
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / ceph-volume / ceph_volume / tests / functional / Vagrantfile
CommitLineData
d2e6a577
FG
1# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
4require 'yaml'
5require 'time'
6VAGRANTFILE_API_VERSION = '2'
7
8DEBUG = false
9
11fdf7f2
TL
10global_settings = {}
11if 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
20end
21
22LIBVIRT_URI = global_settings.fetch('libvirt_uri', '')
23LIBVIRT_STORAGE_POOL = global_settings.fetch('libvirt_storage_pool', '')
24
d2e6a577
FG
25config_file=File.expand_path(File.join(File.dirname(__FILE__), 'vagrant_variables.yml'))
26settings=YAML.load_file(config_file)
27
28LABEL_PREFIX = settings['label_prefix'] ? settings['label_prefix'] + "-" : ""
29NMONS = settings['mon_vms']
30NOSDS = settings['osd_vms']
31NMDSS = settings['mds_vms']
32NRGWS = settings['rgw_vms']
33NNFSS = settings['nfs_vms']
34RESTAPI = settings['restapi']
35NRBD_MIRRORS = settings['rbd_mirror_vms']
36CLIENTS = settings['client_vms']
37NISCSI_GWS = settings['iscsi_gw_vms']
38PUBLIC_SUBNET = settings['public_subnet']
39CLUSTER_SUBNET = settings['cluster_subnet']
40BOX = settings['vagrant_box']
41CLIENT_BOX = settings['client_vagrant_box']
42BOX_URL = settings['vagrant_box_url']
43SYNC_DIR = settings['vagrant_sync_dir']
44MEMORY = settings['memory']
45ETH = settings['eth']
46USER = settings['ssh_username']
47
48ASSIGN_STATIC_IP = settings.fetch('assign_static_ip', true)
49DISABLE_SYNCED_FOLDER = settings.fetch('vagrant_disable_synced_folder', false)
50DISK_UUID = Time.now.utc.to_i
51
52def 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)
57end
58
59Vagrant.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
429end