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