Skip to content
Snippets Groups Projects
Commit dfbb41df authored by Rowan Powell's avatar Rowan Powell
Browse files

Reformatted vagrantfile, added /infra/streaming/rspec.yml

parent e562398d
No related branches found
No related tags found
No related merge requests found
......@@ -22,168 +22,78 @@
#// Created for Project : FLAME
#//
#/////////////////////////////////////////////////////////////////////////
# Define ipendpoint configuration parameters
# Requirements
require 'getoptlong'
require 'yaml'
ipendpoints = {
"apache1" => {
:ip_address => "192.168.50.11",
:location => "DC1",
:sfc_id => "MS_Template_1",
:sfc_id_instance => "MS_I1",
:sf_id => "adaptive_streaming",
:sf_id_instance => "adaptive_streaming_I1",
:ipendpoint_id => "adaptive_streaming_I1_apache1",
:influxdb_url => "http://192.168.50.10:8086",
:database_name => "CLMCMetrics"
},
"apache2" => {
:ip_address => "192.168.50.12",
:location => "DC2",
:sfc_id => "MS_Template_1",
:sfc_id_instance => "MS_I1",
:sf_id => "adaptive_streaming",
:sf_id_instance => "adaptive_streaming_I1",
:ipendpoint_id => "adaptive_streaming_I1_apache2",
:influxdb_url => "http://192.168.50.10:8086",
:database_name => "CLMCMetrics"
},
"nginx1" => {
:ip_address => "192.168.50.13",
:location => "DC1",
:sfc_id => "MS_Template_1",
:sfc_id_instance => "MS_I1",
:sf_id => "adaptive_streaming",
:sf_id_instance => "adaptive_streaming_nginx_I1",
:ipendpoint_id => "adaptive_streaming_nginx_I1_apache1",
:influxdb_url => "http://192.168.50.10:8086",
:database_name => "CLMCMetrics"
},
"mongo1" => {
:ip_address => "192.168.50.14",
:location => "DC1",
:sfc_id => "MS_Template_1",
:sfc_id_instance => "MS_I1",
:sf_id => "metadata_database",
:sf_id_instance => "metadata_database_I1",
:ipendpoint_id => "metadata_database_I1_apache1",
:influxdb_url => "http://192.168.50.10:8086",
:database_name => "CLMCMetrics"
}
}
# Custom options:
# --infra <infradir>
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.define "clmc-service" do |my|
config.vm.network :private_network, ip: "192.168.50.10", virtualbox__intnet: "clmc-net"
my.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 2048]
v.customize ["modifyvm", :id, "--cpus", 1]
end
# open InfluxDB port
config.vm.network "forwarded_port", guest: 8086, host: 8086
# open Chronograf port
config.vm.network "forwarded_port", guest: 8888, host: 8888
# open Kapacitor port
config.vm.network "forwarded_port", guest: 9092, host: 9092
# install the CLMC service
config.vm.provision :shell, :path => 'scripts/clmc-service/install-clmc-service.sh'
# start the CLMC service
config.vm.provision :shell, :path => 'scripts/clmc-service/start-clmc-service.sh'
end
# Apache Server 1
config.vm.define "apache1" do |my|
config.vm.network :private_network, ip: "#{ipendpoints['apache1'][:ip_address]}", virtualbox__intnet: "clmc-net"
my.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--cpus", 1]
end
# open apache port
config.vm.network "forwarded_port", guest: 80, host: 8081
# install the apache service
config.vm.provision :shell, :path => 'test/services/apache/install-apache.sh'
# Install CLMC agent 1
config.vm.provision :shell, :path => 'scripts/clmc-agent/install-clmc-agent.sh', :args => "/vagrant/test/services/apache/telegraf_apache_template.conf #{ipendpoints['apache1'][:location]} #{ipendpoints['apache1'][:sfc_id]} #{ipendpoints['apache1'][:sfc_id_instance]} #{ipendpoints['apache1'][:sf_id]} #{ipendpoints['apache1'][:sf_id_instance]} #{ipendpoints['apache1'][:ipendpoint_id]} #{ipendpoints['apache1'][:influxdb_url]} #{ipendpoints['apache1'][:database_name]}"
end
# Apache Server 2
config.vm.define "apache2" do |my|
config.vm.network :private_network, ip: "#{ipendpoints['apache2'][:ip_address]}", virtualbox__intnet: "clmc-net"
my.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--cpus", 1]
end
# Set defaults
DEFAULT_INFRA = "streaming"
# open apache port
config.vm.network "forwarded_port", guest: 80, host: 8082
# Define custom options
opts = GetoptLong.new(
[ '--infra', GetoptLong::OPTIONAL_ARGUMENT]
)
# install the apache service
config.vm.provision :shell, :path => 'test/services/apache/install-apache.sh'
# Retrieve custom option values
infra = DEFAULT_INFRA
opts.each do |opt, arg|
case opt
when '--infra'
infra = arg
end
end
# Install CLMC agent
config.vm.provision :shell, :path => 'scripts/clmc-agent/install-clmc-agent.sh', :args => "/vagrant/test/services/apache/telegraf_apache_template.conf #{ipendpoints['apache2'][:location]} #{ipendpoints['apache2'][:sfc_id]} #{ipendpoints['apache2'][:sfc_id_instance]} #{ipendpoints['apache2'][:sf_id]} #{ipendpoints['apache2'][:sf_id_instance]} #{ipendpoints['apache2'][:ipendpoint_id]} #{ipendpoints['apache2'][:influxdb_url]} #{ipendpoints['apache2'][:database_name]}"
end
# NGINX VM
config.vm.define "NGINX_Service" do |my|
# load custom config file
puts "loading custom infrastructure configuration: #{infra}"
puts "custom config file: /infra/#{infra}/rspec.yml"
host_rspec_file = "infra/#{infra}/rspec.yml"
hosts = YAML.load_file(host_rspec_file)
config.vm.network :private_network, ip: "#{ipendpoints['nginx1'][:ip_address]}", virtualbox__intnet: "clmc-net"
my.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--cpus", 1]
# Start creating VMS using xenial64 as the base box
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
# Dynamic VMs
hosts['hosts'].each do |host|
#p host["name"]
instance_name = host["name"]
config.vm.define instance_name do |instance_config|
# Specify VM properties
instance_config.vm.hostname = instance_name
instance_config.disksize.size = host["disk"]
instance_config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", host["memory"]]
v.customize ["modifyvm", :id, "--cpus", host["cpus"]]
end
# open apache port
config.vm.network "forwarded_port", guest: 80, host: 8083
# install the apache service
config.vm.provision :shell, :path => 'test/services/nginx/install-nginx.sh'
# Install CLMC agent
config.vm.provision :shell, :path => 'scripts/clmc-agent/install-clmc-agent.sh', :args => "/vagrant/test/services/nginx/telegraf_nginx_template.conf #{ipendpoints['nginx1'][:location]} #{ipendpoints['nginx1'][:sfc_id]} #{ipendpoints['nginx1'][:sfc_id_instance]} #{ipendpoints['nginx1'][:sf_id]} #{ipendpoints['nginx1'][:sf_id_instance]} #{ipendpoints['nginx1'][:ipendpoint_id]} #{ipendpoints['nginx1'][:influxdb_url]} #{ipendpoints['nginx1'][:database_name]}"
end
# MONGODB VM
config.vm.define "MONGO_Service" do |my|
config.vm.network :private_network, ip: "#{ipendpoints['mongo1'][:ip_address]}", virtualbox__intnet: "clmc-net"
my.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--cpus", 1]
# Configure network
config.vm.network :private_network, ip: "#{host["ip_address"]}", virtualbox__intnet: "clmc-net"
# Port forwarding
puts "Forwarding the following specified ports for #{host["name"]}:"
host['forward_ports'].each do |port|
puts "Forwarding guest:#{port["guest"]} => host:#{port["host"]}"
config.vm.network "forwarded_port", guest: port["guest"], host: port["host"]
end
# Switch case added here to make clmc-service provisioning simple without having to have a complex rspec.yml file
# We only run a service installation script and the agent installation script when creating a specific service VM, not the clmc-service VM
case host
when 'clmc-service'
config.vm.provision :shell, :path => "scripts/clmc-service/#{host["install_script"]}"
config.vm.provision :shell, :path => "scripts/clmc-service/#{host["start_script"]}"
when (not 'clmc-service')
# specific service install
service_install_path = "test/services/#{host["service_name"]}/install-#{host["service_name"]}.sh"
puts "installing service script: #{service_install_path}"
config.vm.provision :shell, :path => service_install_path
# agent install
config.vm.provision :shell, :path => "scripts/clmc-agent/install-clmc-agent.sh", :args => "/vagrant/test/services/#{host["service_name"]}/telegraf_#{host["service_name"]}_template.conf #{host["location"]} #{host["sfc_id"]} #{host["sfc_id_instance"]} #{host["sf_id"]} #{host["sf_id_instance"]} #{host["ipendpoint_id"]} #{host["influxdb_url"]} #{host["database_name"]}"
end
# open apache port
config.vm.network "forwarded_port", guest: 80, host: 8084
# install the apache service
config.vm.provision :shell, :path => 'test/services/mongo/install-mongo.sh'
# Install CLMC agent
config.vm.provision :shell, :path => 'scripts/clmc-agent/install-clmc-agent.sh', :args => "/vagrant/test/services/mongo/telegraf_mongo_template.conf #{ipendpoints['mongo1'][:location]} #{ipendpoints['mongo1'][:sfc_id]} #{ipendpoints['mongo1'][:sfc_id_instance]} #{ipendpoints['mongo1'][:sf_id]} #{ipendpoints['mongo1'][:sf_id_instance]} #{ipendpoints['mongo1'][:ipendpoint_id]} #{ipendpoints['mongo1'][:influxdb_url]} #{ipendpoints['mongo1'][:database_name]}"
end
config.vm.define "telegraf" do |my|
end
end
config.vm.define "ipendpoint1" do |my|
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment