blob: 014f2fda01ef662ef95e7d2455f15bba1267ecf7 [file] [log] [blame]
Victor Morales89ce3212017-06-16 18:32:48 -05001# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
Idan Amit46123862017-09-19 13:43:32 +03004
5configuration = {
6 # Generic parameters used across all ONAP components
Victor Morales89ce3212017-06-16 18:32:48 -05007 'public_net_id' => '00000000-0000-0000-0000-000000000000',
8 'key_name' => 'ecomp_key',
9 'pub_key' => '',
10 'nexus_repo' => 'https://nexus.onap.org/content/sites/raw',
11 'nexus_docker_repo' => 'nexus3.onap.org:10001',
12 'nexus_username' => 'docker',
13 'nexus_password' => 'docker',
14 'dmaap_topic' => 'AUTO',
15 'artifacts_version' => '1.0.0',
16 'docker_version' => '1.0-STAGING-latest',
17 'gerrit_branch' => 'master',
18# Parameters for DCAE instantiation
19 'dcae_zone' => 'iad4',
20 'dcae_state' => 'vi',
21 'openstack_tenant_id' => '',
22 'openstack_username' => '',
23 'openstack_api_key' => '',
24 'openstack_password' => '',
25 'nexus_repo_root' => 'https://nexus.onap.org',
26 'nexus_url_snapshot' => 'https://nexus.onap.org/content/repositories/snapshots',
27 'gitlab_branch' => 'master',
Victor Moralesdd074802017-07-26 16:06:35 -050028 'build_image' => 'True',
Idan Amit0a295552017-08-17 17:03:59 +030029 'pull_docker_image' => 'True',
Victor Moralesdd074802017-07-26 16:06:35 -050030 'odl_version' => '0.5.3-Boron-SR3',
Idan Amit1690e082017-08-20 08:58:14 +030031 'clone_repo' => 'True',
Victor Morales2909e2e2017-08-08 15:51:52 -050032 'compile_repo' => 'False',
33 'enable_oparent' => 'True'
Victor Morales89ce3212017-06-16 18:32:48 -050034}
35
Idan Amit46123862017-09-19 13:43:32 +030036
37box = {
38 :virtualbox => 'ubuntu/trusty64',
39 :libvirt => 'sputnik13/trusty64',
40 :openstack => nil
41}
42
43
44nodes = [
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070045 {
Idan Amit46123862017-09-19 13:43:32 +030046 :name => "aai",
47 :ips => ['10.252.0.6', "192.168.50.6"],
48 :macs => [],
49 :cpus => 2,
50 :cpu => "50",
51 :ram => 4 * 1024,
52 :groups => ["individual"],
53 :args => ["aai"]
54 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070055 {
Idan Amit46123862017-09-19 13:43:32 +030056 :name => "all-in-one",
57 :ips => ['10.252.0.3', "192.168.50.3"],
58 :macs => [],
59 :cpus => 2,
60 :cpu => "50",
61 :ram => 12 * 1024,
62 :groups => ["all-in-one"],
63 :flavor => 'm1.xlarge',
64 :args => ['mr', 'sdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc', 'ccsdk'],
65 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070066 {
Idan Amit46123862017-09-19 13:43:32 +030067 :name => "appc",
68 :ips => ['10.252.0.14', "192.168.50.14"],
69 :macs => [],
70 :cpus => 2,
71 :cpu => "50",
72 :ram => 4 * 1024,
73 :groups => ["individual"],
74 :args => ["appc"],
75 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070076 {
Idan Amit46123862017-09-19 13:43:32 +030077 :name => "ccsdk",
78 :ips => ['10.252.0.14', "192.168.50.17"],
79 :macs => [],
80 :cpus => 2,
81 :cpu => "50",
82 :ram => 4 * 1024,
83 :groups => ["individual"],
84 :args => ["ccsdk"],
85 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070086 {
Idan Amit46123862017-09-19 13:43:32 +030087 :name => "dcae",
88 :ips => ['10.252.0.12', "192.168.50.12"],
89 :macs => [],
90 :cpus => 2,
91 :cpu => "50",
92 :ram => 4 * 1024,
93 :groups => ["individual"],
94 :args => ["dcae"],
95 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -070096 {
Idan Amit46123862017-09-19 13:43:32 +030097 :name => "dns",
98 :ips => ['10.252.0.3', "192.168.50.3"],
99 :macs => [],
100 :cpus => 2,
101 :cpu => "50",
102 :ram => 1 * 1024,
103 :groups => ["individual"],
104 :flavor => 'm1.small',
105 :args => [" "]
106 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700107 {
Idan Amit46123862017-09-19 13:43:32 +0300108 :name => "message-router",
109 :ips => ['10.252.0.4', "192.168.50.4"],
110 :macs => [],
111 :cpus => 2,
112 :cpu => "50",
113 :ram => 4 * 1024,
114 :groups => ["individual"],
115 :args => ["mr"],
116 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700117 {
Idan Amit46123862017-09-19 13:43:32 +0300118 :name => "mso",
119 :ips => ['10.252.0.7', "192.168.50.7"],
120 :macs => [],
121 :cpus => 2,
122 :cpu => "50",
123 :ram => 4 * 1024,
124 :groups => ["individual"],
125 :args => ["mso"],
126 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700127 {
Idan Amit46123862017-09-19 13:43:32 +0300128 :name => "multicloud",
129 :ips => ['10.252.0.16', "192.168.50.16"],
130 :macs => [],
131 :cpus => 2,
132 :cpu => "50",
133 :ram => 4 * 1024,
134 :groups => ["individual"],
135 :args => ["multicloud"],
136 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700137 {
Idan Amit46123862017-09-19 13:43:32 +0300138 :name => "policy",
139 :ips => ['10.252.0.13', "192.168.50.13"],
140 :macs => [],
141 :cpus => 2,
142 :cpu => "50",
143 :ram => 4 * 1024,
144 :groups => ["individual"],
145 :args => ["policy"],
146 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700147 {
Idan Amit46123862017-09-19 13:43:32 +0300148 :name => "portal",
149 :ips => ['10.252.0.11', "192.168.50.11"],
150 :macs => [],
151 :cpus => 2,
152 :cpu => "50",
153 :ram => 4 * 1024,
154 :groups => ["individual"],
155 :args => ["portal"],
156 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700157 {
Idan Amit46123862017-09-19 13:43:32 +0300158 :name => "robot",
159 :ips => ['10.252.0.8', "192.168.50.8"],
160 :macs => [],
161 :cpus => 2,
162 :cpu => "50",
163 :ram => 4 * 1024,
164 :groups => ["individual"],
165 :args => ["robot"],
166 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700167 {
Idan Amit46123862017-09-19 13:43:32 +0300168 :name => "sdc",
169 :ips => ['10.252.0.5', "192.168.50.5"],
170 :macs => [],
171 :cpus => 2,
172 :cpu => "50",
173 :ram => 8 * 1024,
174 :groups => ["individual"],
175 :args => ["sdc"],
176 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700177 {
Idan Amit46123862017-09-19 13:43:32 +0300178 :name => "sdnc",
179 :ips => ['10.252.0.10', "192.168.50.10"],
180 :macs => [],
181 :cpus => 2,
182 :cpu => "50",
183 :ram => 4 * 1024,
184 :groups => ["individual"],
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700185 :args => ["sdnc"],
Idan Amit46123862017-09-19 13:43:32 +0300186 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700187 {
Idan Amit46123862017-09-19 13:43:32 +0300188 :name => "testing",
189 :ips => ['10.252.0.3', "192.168.50.3"],
190 :macs => [],
191 :cpus => 2,
192 :cpu => "50",
193 :ram => 4 * 1024,
194 :groups => ["testing"],
195 :flavor => 'm1.small',
196 :args => [""],
197 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700198 {
Idan Amit46123862017-09-19 13:43:32 +0300199 :name => "vfc",
200 :ips => ['10.252.0.15', "192.168.50.15"],
201 :macs => [],
202 :cpus => 2,
203 :cpu => "50",
204 :ram => 4 * 1024,
205 :groups => ["individual"],
206 :args => ['vfc'],
207 },
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700208 {
Idan Amit46123862017-09-19 13:43:32 +0300209 :name => "vid",
210 :ips => ['10.252.0.9', "192.168.50.9"],
211 :macs => [],
212 :cpus => 2,
213 :cpu => "50",
214 :ram => 4 * 1024,
215 :groups => ["individual"],
216 :args => ['vid'],
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700217 },
Idan Amit46123862017-09-19 13:43:32 +0300218]
219
220
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700221run_path = 'vagrant_utils/postinstall.sh'
222sdc_volume = 'vol1-sdc-data.vdi'
Idan Amit46123862017-09-19 13:43:32 +0300223
Victor Moralesdd074802017-07-26 16:06:35 -0500224Vagrant.require_version ">= 1.8.6"
225
Victor Moralesdd074802017-07-26 16:06:35 -0500226# Determine the provider used
227provider = (ENV['VAGRANT_DEFAULT_PROVIDER'] || :virtualbox).to_sym
Idan Amit46123862017-09-19 13:43:32 +0300228puts "[INFO] Provider: #{provider} "
229
Victor Morales89ce3212017-06-16 18:32:48 -0500230vd_conf = ENV.fetch('VD_CONF', 'etc/settings.yaml')
231if File.exist?(vd_conf)
232 require 'yaml'
233 user_conf = YAML.load_file(vd_conf)
Idan Amit46123862017-09-19 13:43:32 +0300234 configuration.update(user_conf)
Victor Morales89ce3212017-06-16 18:32:48 -0500235end
236
Idan Amit46123862017-09-19 13:43:32 +0300237#Set network interface
Areli Fussf57e9e72017-09-28 14:24:53 +0300238net_interface = 'vboxnet0'
Idan Amit46123862017-09-19 13:43:32 +0300239is_windows = Gem.win_platform?
240if is_windows
241 net_interface = 'VirtualBox Host-Only Ethernet Adapter #2'
Idan Amit46123862017-09-19 13:43:32 +0300242end
243puts "[INFO] Net interface: #{net_interface}"
244
245
246#If argument is given use it. Otherwise use Env: DEPLOY_MODE else use default
247requested_machine = ARGV[1]
248
Victor Morales89ce3212017-06-16 18:32:48 -0500249deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual')
Idan Amit46123862017-09-19 13:43:32 +0300250if requested_machine != nil
251 if requested_machine.include?("all-in-one") || requested_machine.include?("testing")
252 deploy_mode = requested_machine
253 end
254end
255
256#Catch the status of all machines
257if ARGV[0] == 'status' || ARGV[0] == 'destroy'
258 deploy_mode = 'NA'
259end
260
261puts "[INFO] Deploy Mode: #{deploy_mode}"
262
263#In case of all-in-one or testing clean the nodes list
264case deploy_mode
265 when 'all-in-one'
266 nodes.select! do |node|
267 if node[:name].include?("all-in-one")
268 true if node[:name]
269 end
270 end
271
272 when 'individual'
273 nodes.select! do |node|
274 if node[:groups][0].include?("individual")
275 true if node[:name]
Idan Amit46123862017-09-19 13:43:32 +0300276 end
277 end
278
279 when 'testing'
280 nodes.select! do |node|
281 if node[:name].include?("testing")
282 true if node[:name]
283 end
284 end
285end
Victor Morales89ce3212017-06-16 18:32:48 -0500286
287Vagrant.configure("2") do |config|
288
Idan Amit46123862017-09-19 13:43:32 +0300289 # PROXY definitions
290 if ENV['http_proxy'] != nil and ENV['https_proxy'] != nil and ENV['no_proxy'] != nil
291 if not Vagrant.has_plugin?('vagrant-proxyconf')
292 system 'vagrant plugin install vagrant-proxyconf'
293 raise 'vagrant-proxyconf was installed but it requires to execute again'
294 end
295 config.proxy.http = ENV['http_proxy']
296 config.proxy.https = ENV['https_proxy']
297 config.proxy.no_proxy = ENV['no_proxy']
Victor Morales89ce3212017-06-16 18:32:48 -0500298 end
Victor Morales89ce3212017-06-16 18:32:48 -0500299
Idan Amit46123862017-09-19 13:43:32 +0300300 if Vagrant.has_plugin?('vagrant-vbguest')
301 puts 'vagrant-vbguest auto_update feature will be disable to avoid sharing conflicts'
302 config.vbguest.auto_update = false
Victor Moralesf62e7b82017-07-27 17:26:06 -0500303 end
Idan Amit46123862017-09-19 13:43:32 +0300304
305 if provider == :libvirt
306 if not Vagrant.has_plugin?('vagrant-libvirt')
307 system 'vagrant plugin install vagrant-libvirt'
308 raise 'vagrant-libvirt was installed but it requires to execute again'
309 end
Victor Moralesdd074802017-07-26 16:06:35 -0500310 end
Areli Fussf57e9e72017-09-28 14:24:53 +0300311
Idan Amit46123862017-09-19 13:43:32 +0300312 if provider == :openstack
313 config.ssh.username = 'ubuntu'
314 if not Vagrant.has_plugin?('vagrant-openstack-provider')
315 system 'vagrant plugin install vagrant-openstack-provider'
316 raise 'vagrant-openstack-provider was installed but it requires to execute again'
317 end
318 end
Victor Morales89ce3212017-06-16 18:32:48 -0500319
Idan Amit46123862017-09-19 13:43:32 +0300320 nodes.each do |node|
321 config.vm.define node[:name] do |nodeconfig|
Victor Moralesdd074802017-07-26 16:06:35 -0500322
Idan Amit46123862017-09-19 13:43:32 +0300323 # Common Settings:
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700324
Idan Amit46123862017-09-19 13:43:32 +0300325 nodeconfig.vm.provider "virtualbox" do |vbox|
326 vbox.customize ['modifyvm', :id, '--nictype1', 'virtio']
327 vbox.customize ['modifyvm', :id, '--audio', 'none']
328 vbox.customize ['modifyvm', :id, '--vram', '1']
329 vbox.customize ['modifyvm', :id, "--cpuhotplug", "off"]
330 vbox.customize ['modifyvm', :id, "--cpuexecutioncap", node[:cpu]]
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700331 vbox.customize ['modifyvm', :id, "--cpus", node[:cpus]]
Idan Amit46123862017-09-19 13:43:32 +0300332 vbox.customize ["modifyvm", :id, "--memory", node[:ram]]
Victor Morales89ce3212017-06-16 18:32:48 -0500333 end
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700334
Idan Amit46123862017-09-19 13:43:32 +0300335 nodeconfig.vm.provider "libvirt" do |lbox|
336 lbox.memory = node[:ram]
337 lbox.nested = true
Victor Morales89ce3212017-06-16 18:32:48 -0500338 end
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700339
Idan Amit46123862017-09-19 13:43:32 +0300340 nodeconfig.vm.provider :openstack do |obox|
341 obox.openstack_auth_url = ENV.fetch('OS_AUTH_URL', '')
342 obox.tenant_name = ENV.fetch('OS_TENANT_NAME', '')
343 obox.username = ENV.fetch('OS_USERNAME', '')
344 obox.password = ENV.fetch('OS_PASSWORD', '')
345 obox.region = ENV.fetch('OS_REGION_NAME', '')
346 obox.identity_api_version = ENV.fetch('OS_IDENTITY_API_VERSION', '')
347 obox.domain_name = ENV.fetch('OS_PROJECT_DOMAIN_ID', '')
348 obox.project_name = ENV.fetch('OS_PROJECT_NAME', '')
349 obox.floating_ip_pool = ENV.fetch('OS_FLOATING_IP_POOL', '')
350 obox.floating_ip_pool_always_allocate = (ENV['OS_FLOATING_IP_ALWAYS_ALLOCATE'] == 'true')
351 obox.image = ENV.fetch('OS_IMAGE', '')
352 obox.security_groups = [ENV.fetch('OS_SEC_GROUP', '')]
353 obox.networks = ENV.fetch('OS_NETWORK', '')
354 obox.flavor = node[:flavor]
355 obox.server_name = node[:name]
Idan Amit46123862017-09-19 13:43:32 +0300356 end
Victor Moralesd4036482017-08-15 17:54:14 -0500357
Idan Amit46123862017-09-19 13:43:32 +0300358 # Set Box type
359 nodeconfig.vm.box = box[provider]
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700360
Idan Amit46123862017-09-19 13:43:32 +0300361 # Set Node name
362 nodeconfig.vm.hostname = node[:name]
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700363
Idan Amit46123862017-09-19 13:43:32 +0300364 # Set Sync Folder
365 nodeconfig.vm.synced_folder ".", "/vagrant", disabled: true
366 nodeconfig.vm.synced_folder './opt', '/opt/', create: true
367 nodeconfig.vm.synced_folder './lib', '/var/onap/', create: true
368 if !is_windows
369 nodeconfig.vm.synced_folder '~/.m2', '/root/.m2/', create: true
370 end
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700371 # Set Network
Areli Fussf57e9e72017-09-28 14:24:53 +0300372 nodeconfig.vm.network :private_network,
373 :adapter => 2,
374 :name => net_interface,
375 :ip => node[:ips][0]
376
377 nodeconfig.vm.network :private_network,
378 :adapter => 3,
379 :ip => node[:ips][1],
380 :type => :static
Idan Amit46123862017-09-19 13:43:32 +0300381
382 # Specific settings:
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700383
Idan Amit46123862017-09-19 13:43:32 +0300384 #Set Storage (For SDC or All-in-one)
385 if node[:name].include?("all-in-one") || node[:name].include?("sdc")
386 nodeconfig.vm.provider "virtualbox" do |v|
387 unless File.exist?(sdc_volume)
388 v.customize ['createhd', '--filename', sdc_volume, '--size', 20 * 1024]
389 end
390 v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', sdc_volume]
391 end
Victor Moralesdbe2e0b2017-09-20 09:55:45 -0700392
Idan Amit46123862017-09-19 13:43:32 +0300393 nodeconfig.vm.provider "libvirt" do |v|
394 v.storage :file, path: sdc_volume, bus: 'sata', device: 'vdb', size: '2G'
395 end
396 end
Areli Fussf57e9e72017-09-28 14:24:53 +0300397
Idan Amit46123862017-09-19 13:43:32 +0300398 if node[:name].include? "testing"
399 nodeconfig.vm.synced_folder './tests', '/var/onap_tests/', create: true
400 test_suite = ENV.fetch('TEST_SUITE', '*')
401 test_case = ENV.fetch('TEST_CASE', '*')
402 # Override variables
403 run_path = 'vagrant_utils/unit_testing.sh'
404 node[:args] = [test_suite, test_case]
405 end
406
407
408 if node[:name].include? "vfc"
409 nodeconfig.vm.provision 'docker'
410 end
411
412 nodeconfig.vm.provision 'shell' do |s|
413 s.path = run_path
414 s.args = node[:args]
415 s.env = configuration
416 end
417
418 end #nodeconfig
419 end #node
420end #config