From d4040acd8435eebcb269d71ded75e48dbc96c2f7 Mon Sep 17 00:00:00 2001 From: MJB <mjb@it-innovation.soton.ac.uk> Date: Mon, 4 Jun 2018 17:27:45 +0100 Subject: [PATCH] added port mapping from vagrant VM host to containers --- Vagrantfile | 5 ++++- scripts/test/fixture.sh | 31 ++++++++++++++++++++++++++++++- src/test/clmctest/rspec.json | 7 ++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 3840503..5346250 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -18,7 +18,10 @@ Vagrant.configure("2") do |config| vb.memory = "8192" end - #config.vm.network "forwarded_port", guest: 80, host: 8080 + # Tick stack on CLMC service + config.vm.network "forwarded_port", guest: 8888, host: 8888 + config.vm.network "forwarded_port", guest: 8086, host: 8086 + config.vm.network "forwarded_port", guest: 9092, host: 9092 # Install lxc config.vm.provision :shell, inline: $lxc_script diff --git a/scripts/test/fixture.sh b/scripts/test/fixture.sh index f0a5e97..480df55 100755 --- a/scripts/test/fixture.sh +++ b/scripts/test/fixture.sh @@ -84,6 +84,17 @@ create() { # start telegraf lxc-attach -n ${service_name} -- service telegraf restart fi + + # set forward ports + ports=$(echo $SERVICE | jq -r '.forward_ports') + for row in $(echo "${ports}" | jq -r '.[] | @base64'); do + _jq() { + echo ${row} | base64 --decode | jq -r ${1} + } + guest_port=$(_jq '.guest') + host_port=$(_jq '.host') + iptables -t nat -A PREROUTING -p tcp -i enp0s3 --dport ${host_port} -j DNAT --to-destination ${ip}:${guest_port} + done fi } @@ -111,8 +122,22 @@ destroy() { lxc-stop -n ${service_name} echo "Destroying container: ${service_name}" lxc-destroy -n ${service_name} - ip=$(jq -r --arg NAME ${service_name} '.[] | select(.name==$NAME) | .ip_address' ${config_file}) + + # remove static ip + SERVICE=$(jq --arg NAME ${service_name} '.[] | select(.name==$NAME)' ${config_file}) + ip=$(echo $SERVICE | jq -r '.ip_address') sed -i "/dhcp-host=${service_name},/d" /etc/lxc/dnsmasq.conf + + # remove forward ports + ports=$(echo $SERVICE | jq -r '.forward_ports') + for row in $(echo "${ports}" | jq -r '.[] | @base64'); do + _jq() { + echo ${row} | base64 --decode | jq -r ${1} + } + guest_port=$(_jq '.guest') + host_port=$(_jq '.host') + iptables -t nat -D PREROUTING -p tcp -i enp0s3 --dport ${host_port} -j DNAT --to-destination ${ip}:${guest_port} + done fi } @@ -173,4 +198,8 @@ for service_name in $service_names; do ;; esac fi + + + echo "------>Create iptables summary" + iptables -t nat -L -n -v done diff --git a/src/test/clmctest/rspec.json b/src/test/clmctest/rspec.json index 376194c..45601bd 100644 --- a/src/test/clmctest/rspec.json +++ b/src/test/clmctest/rspec.json @@ -3,7 +3,12 @@ "ip_address": "172.40.231.51", "influxdb_url": "http://172.40.231.51:8086", "database_name": "CLMCMetrics", - "report_period": "25" + "report_period": "25", + "forward_ports": [ + { "guest": 8086, "host": 8086 }, + { "guest": 8888, "host": 8888 }, + { "guest": 9092, "host": 9092 } + ] }, { "name": "apache", -- GitLab