diff options
Diffstat (limited to 'Vagrantfile')
-rw-r--r-- | Vagrantfile | 528 |
1 files changed, 528 insertions, 0 deletions
diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..4b10392 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,528 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com') + +configuration = { + # Generic parameters used across all ONAP components + 'key_name' => 'ecomp_key', + 'pub_key' => '', + 'nexus_repo' => 'https://nexus.onap.org/content/sites/raw', + 'nexus_repo_root' => 'https://nexus.onap.org', + 'nexus_url_snapshot' => 'https://nexus.onap.org/content/repositories/snapshots', + 'nexus_docker_repo' => 'nexus3.onap.org:10001', + 'nexus_username' => 'docker', + 'nexus_password' => 'docker', + 'dmaap_topic' => 'AUTO', + 'artifacts_version' => '1.0.0', + 'docker_version' => 'latest', + # Parameters for DCAE instantiation + 'dcae_zone' => 'iad4', + 'dcae_state' => 'vi', + 'openstack_tenant_id' => '', + 'openstack_username' => '', + 'openstack_api_key' => '', + 'openstack_password' => '', + 'odl_version' => '0.5.3-Boron-SR3', + # Parameters for enabling features + 'debug' => 'True', + 'build_image' => 'True', + 'clone_repo' => 'True', + 'compile_repo' => 'False', + 'enable_oparent' => 'True', + 'skip_get_images' => 'False', + 'skip_install' => 'True' +} + +box = { + :virtualbox => 'ubuntu/trusty64', + :libvirt => 'elastic/ubuntu-14.04-x86_64', + :openstack => nil +} + +nodes = [ + { + :name => "aai", + :ips => ['10.252.0.6', "192.168.50.6"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 8 * 1024, + :groups => ["individual"], + :args => ["aai"], + :fwds => [ + { :guest => 8446, :host => 8446, :guest_ip => '192.168.50.6' }, + { :guest => 9446, :host => 9446, :guest_ip => '192.168.50.6' }, + ] + }, + { + :name => "all-in-one", + :ips => ['10.252.1.3', "192.168.51.3"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 12 * 1024, + :groups => ["all-in-one"], + :flavor => 'm1.xlarge', + :args => ['mr', 'sdc', 'aai', 'mso', 'robot', 'vid', 'sdnc', 'portal', 'dcae', 'policy', 'appc', 'vfc', 'ccsdk', 'multicloud', 'vnfsdk', 'vpp', 'msb'], + }, + { + :name => "appc", + :ips => ['10.252.0.14', "192.168.50.14"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["appc"], + }, + { + :name => "ccsdk", + :ips => ['10.252.0.19', "192.168.50.19"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["ccsdk"], + }, + { + :name => "dcae", + :ips => ['10.252.0.12', "192.168.50.12"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["dcae"], + }, + { + :name => "dns", + :ips => ['10.252.0.3', "192.168.50.3"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 1 * 1024, + :groups => ["individual"], + :flavor => 'm1.small', + :args => [" "] + }, + { + :name => "message-router", + :ips => ['10.252.0.4', "192.168.50.4"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["mr"], + }, + { + :name => "mso", + :ips => ['10.252.0.20', "192.168.50.20"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["mso"], + }, + { + :name => "msb", + :ips => ['10.252.0.7', "192.168.50.7"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["msb"], + }, + { + :name => "multicloud", + :ips => ['10.252.0.16', "192.168.50.16"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["multicloud"], + :fwds => [ + { :guest => 9003, :host => 9003, :guest_ip => '192.168.50.16' }, + ] + }, + { + :name => "oom", + :ips => ['10.252.0.21', "192.168.50.21"], + :macs => [], + :cpus => 16, + :cpu => "50", + :ram => 64 * 1024, + :groups => ["individual"], + :args => ["oom"], + :hd => { :virtualbox => "61440", :libvirt => "60G", }, + :fwds => [ + { :guest => 8880, :host => 8880, :guest_ip => '192.168.50.21' }, + { :guest => 8989, :host => 8989, :guest_ip => '192.168.50.21' }, + ] + }, + { + :name => "policy", + :ips => ['10.252.0.13', "192.168.50.13"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["policy"], + }, + { + :name => "portal", + :ips => ['10.252.0.11', "192.168.50.11"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["portal"], + }, + { + :name => "robot", + :ips => ['10.252.0.8', "192.168.50.8"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["robot"], + }, + { + :name => "sdc", + :ips => ['10.252.0.5', "192.168.50.5"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 6 * 1024, + :groups => ["individual"], + :args => ["sdc"], + :hd => { :virtualbox => "20480", :libvirt => "20G", }, + :fwds => [ + { :guest => 8285, :host => 8285, :guest_ip => '192.168.50.5' }, + ] + }, + { + :name => "sdnc", + :ips => ['10.252.0.10', "192.168.50.10"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ["sdnc"], + }, + { + :name => "testing", + :ips => ['10.252.2.3', "192.168.52.3"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["testing"], + :flavor => 'm1.small', + :args => [""], + }, + { + :name => "vfc", + :ips => ['10.252.0.15', "192.168.50.15"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ['vfc'], + }, + { + :name => "vid", + :ips => ['10.252.0.9', "192.168.50.9"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ['vid'], + }, + { + :name => "vnfsdk", + :ips => ['10.252.0.18', "192.168.50.18"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ['vnfsdk'], + }, + { + :name => "vvp", + :ips => ['10.252.0.17', "192.168.50.17"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 4 * 1024, + :groups => ["individual"], + :args => ['vvp'], + }, + { + :name => "openstack", + :ips => ['10.252.3.3', "192.168.53.3"], + :macs => [], + :cpus => 2, + :cpu => "50", + :ram => 8 * 1024, + :groups => ["individual"], + :args => ['openstack'], + :fwds => [ + { :guest => 80, :host => 8888, :guest_ip => '192.168.53.4' }, + { :guest => 6080, :host => 6080, :guest_ip => '192.168.53.4' }, + ] + } +] + +run_path = 'vagrant_utils/postinstall.sh' +sdc_volume = 'vol1-sdc-data.vdi' + +Vagrant.require_version ">= 1.8.6" + +# Determine the provider used +provider = (ENV['VAGRANT_DEFAULT_PROVIDER'] || :virtualbox).to_sym +puts "[INFO] Provider: #{provider} " + +vd_conf = ENV.fetch('VD_CONF', 'etc/settings.yaml') +if File.exist?(vd_conf) + require 'yaml' + user_conf = YAML.load_file(vd_conf) + configuration.update(user_conf) +end + +# Set network interface +net_interface = 'vboxnet0' +is_windows = Gem.win_platform? +if is_windows + net_interface = 'VirtualBox Host-Only Ethernet Adapter #2' +end +puts "[INFO] Net interface: #{net_interface}" + + +# If argument is given use it. Otherwise use Env: DEPLOY_MODE else use default +requested_machine = ARGV[1] + +deploy_mode = ENV.fetch('DEPLOY_MODE', 'individual') +if requested_machine != nil + if requested_machine.include?("all-in-one") || requested_machine.include?("testing") + deploy_mode = requested_machine + end +end + +# Catch the status of all machines +if ARGV[0] == 'status' || ARGV[0] == 'destroy' + deploy_mode = 'NA' +end + +puts "[INFO] Deploy Mode: #{deploy_mode}" + +# In case of all-in-one or testing clean the nodes list +case deploy_mode + when 'all-in-one' + nodes.select! do |node| + if node[:name].include?("all-in-one") + true if node[:name] + end + end + + when 'individual' + nodes.select! do |node| + if node[:groups][0].include?("individual") + true if node[:name] + end + end + + when 'testing' + nodes.select! do |node| + if node[:name].include?("testing") + true if node[:name] + end + end +end + +Vagrant.configure("2") do |config| + + # PROXY definitions + if ENV['http_proxy'] != nil and ENV['https_proxy'] != nil + if not Vagrant.has_plugin?('vagrant-proxyconf') + system 'vagrant plugin install vagrant-proxyconf' + raise 'vagrant-proxyconf was installed but it requires to execute again' + end + config.proxy.enabled = { docker: false } + config.proxy.http = ENV['http_proxy'] + config.proxy.https = ENV['https_proxy'] + configuration['socks_proxy'] = ENV['socks_proxy'] + end + + if Vagrant.has_plugin?('vagrant-vbguest') + puts 'vagrant-vbguest auto_update feature will be disable to avoid sharing conflicts' + config.vbguest.auto_update = false + end + + sync_type = "virtualbox" + if provider == :libvirt + if not Vagrant.has_plugin?('vagrant-libvirt') + system 'vagrant plugin install vagrant-libvirt' + raise 'vagrant-libvirt was installed but it requires to execute again' + end + sync_type = "nfs" + end + + if provider == :openstack + config.ssh.username = 'ubuntu' + if not Vagrant.has_plugin?('vagrant-openstack-provider') + system 'vagrant plugin install vagrant-openstack-provider' + raise 'vagrant-openstack-provider was installed but it requires to execute again' + end + end + + nodes.each do |node| + config.vm.define node[:name] do |nodeconfig| + + # NO_PROXY definitions + if ENV['no_proxy'] != nil + if not Vagrant.has_plugin?('vagrant-proxyconf') + system 'vagrant plugin install vagrant-proxyconf' + raise 'vagrant-proxyconf was installed but it requires to execute again' + end + config.proxy.no_proxy = node[:ips].join(",") + "," + ENV['no_proxy'] + end + + # Common Settings: + + nodeconfig.vm.provider "virtualbox" do |vbox| + vbox.customize ['modifyvm', :id, '--nictype1', 'virtio'] + vbox.customize ['modifyvm', :id, '--audio', 'none'] + vbox.customize ['modifyvm', :id, '--vram', '1'] + vbox.customize ['modifyvm', :id, "--cpuhotplug", "off"] + vbox.customize ['modifyvm', :id, "--cpuexecutioncap", node[:cpu]] + vbox.customize ['modifyvm', :id, "--cpus", node[:cpus]] + vbox.customize ["modifyvm", :id, "--memory", node[:ram]] + + # Set Network + nodeconfig.vm.network :private_network, + :adapter => 2, + :name => net_interface, + :ip => node[:ips][0] + + nodeconfig.vm.network :private_network, + :adapter => 3, + :ip => node[:ips][1], + :type => :static + + # Set Storage + if node.has_key? :hd + volume_file = node[:name] + '-vol1-data.vdi' + unless File.exist?(volume_file) + vbox.customize ['createmedium', 'disk', '--filename', volume_file, '--size', node[:hd][provider]] + end + vbox.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', volume_file] + end + end + + nodeconfig.vm.provider "libvirt" do |lbox| + lbox.memory = node[:ram] + lbox.nested = true + lbox.cpu_mode = 'host-passthrough' + lbox.cpus = node[:cpus] + + # Set Network + nodeconfig.vm.network :private_network, + :ip => node[:ips][0] + + nodeconfig.vm.network :private_network, + :ip => node[:ips][1], + :type => :static + + # Set Storage + if node.has_key? :hd + lbox.storage :file, bus: 'sata', device: 'sda', size: node[:hd][provider] + end + end + if node.has_key? :fwds + node[:fwds].each do |fwd| + nodeconfig.vm.network :forwarded_port, + :guest => fwd[:guest], + :guest_ip => fwd[:guest_ip], + :host => fwd[:host], + :host_ip => "0.0.0.0" + end + end + + nodeconfig.vm.provider :openstack do |obox| + obox.openstack_auth_url = ENV.fetch('OS_AUTH_URL', '') + obox.tenant_name = ENV.fetch('OS_TENANT_NAME', '') + obox.username = ENV.fetch('OS_USERNAME', '') + obox.password = ENV.fetch('OS_PASSWORD', '') + obox.region = ENV.fetch('OS_REGION_NAME', '') + obox.identity_api_version = ENV.fetch('OS_IDENTITY_API_VERSION', '') + obox.domain_name = ENV.fetch('OS_PROJECT_DOMAIN_ID', '') + obox.project_name = ENV.fetch('OS_PROJECT_NAME', '') + obox.floating_ip_pool = ENV.fetch('OS_FLOATING_IP_POOL', '') + obox.floating_ip_pool_always_allocate = (ENV['OS_FLOATING_IP_ALWAYS_ALLOCATE'] == 'true') + obox.image = ENV.fetch('OS_IMAGE', '') + obox.security_groups = [ENV.fetch('OS_SEC_GROUP', '')] + obox.networks = ENV.fetch('OS_NETWORK', '') + obox.flavor = node[:flavor] + obox.server_name = node[:name] + end + + # Set Box type + if "openstack" == node[:name] + box = { + :virtualbox => 'ubuntu/xenial64', + :libvirt => 'elastic/ubuntu-16.04-x86_64' + } + end + nodeconfig.vm.box = box[provider] + + # Set Node name + nodeconfig.vm.hostname = node[:name] + + # Set Sync Folder + nodeconfig.vm.synced_folder ".", "/vagrant", disabled: true + nodeconfig.vm.synced_folder './opt', '/opt/onap/', create: true, type: sync_type + nodeconfig.vm.synced_folder './lib', '/var/onap/', create: true, type: sync_type + if !is_windows + nodeconfig.vm.synced_folder '~/.m2', '/root/.m2/', create: true + end + + # Specific settings: + + if node[:name].include? "testing" + nodeconfig.vm.synced_folder './tests', '/var/onap_tests/', create: true + test_suite = ENV.fetch('TEST_SUITE', '*') + test_case = ENV.fetch('TEST_CASE', '*') + # Override variables + run_path = 'vagrant_utils/unit_testing.sh' + node[:args] = [test_suite, test_case] + else + configuration['skip_get_images'] = ENV.fetch('SKIP_GET_IMAGES', configuration['skip_get_images']) + configuration['skip_install'] = ENV.fetch('SKIP_INSTALL', configuration['skip_install']) + end + + if node[:name].include? "vfc" + nodeconfig.vm.provision 'docker' + end + + nodeconfig.vm.provision 'shell' do |s| + s.path = run_path + s.args = node[:args] + s.env = configuration + end + + end #nodeconfig + end #node +end #config |