Created
April 15, 2018 23:00
-
-
Save johnsom/25709f5450ce9458b143575a123dae6a to your computer and use it in GitHub Desktop.
setupmultinet.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# set -x | |
function wait_for_nova_active { | |
echo "Waiting for $1 to become ACTIVE..." | |
status=$(openstack server show -c status -f value $1) | |
while [ "$status" != "ACTIVE" ] | |
do | |
sleep 1 | |
status=$(openstack server show -c status -f value $1) | |
if [ $status == "ERROR" ] | |
then | |
echo "$1 ERRORED. Exiting." | |
exit 1; | |
fi | |
done | |
} | |
project_id=$(openstack project list | awk '/ admin / {print $2}') | |
sec_group_id=$(openstack security group list --project $project_id | awk '/ default / {print $2}') | |
openstack security group rule create --remote-ip 0.0.0.0/0 --dst-port 22 --protocol tcp $sec_group_id | |
#nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 | |
openstack security group rule create --remote-ip 0.0.0.0/0 --dst-port 80 --protocol tcp $sec_group_id | |
#nova secgroup-add-rule default tcp 80 80 0.0.0.0/0 | |
#nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 | |
openstack security group rule create --remote-ip 0.0.0.0/0 --protocol icmp $sec_group_id | |
TENANT_NET_1_ID=$(openstack network create -c id -f value tenant-1-net) | |
openstack subnet create --allocation-pool start=172.21.1.10,end=172.21.1.200 --network tenant-1-net --subnet-range 172.21.1.0/24 tenant-1-subnet | |
TENANT_NET_2_ID=$(openstack network create -c id -f value tenant-2-net) | |
openstack subnet create --allocation-pool start=172.21.2.10,end=172.21.2.200 --network tenant-2-net --subnet-range 172.21.2.0/24 tenant-2-subnet | |
openstack router add subnet router1 tenant-1-subnet | |
openstack router add subnet router1 tenant-2-subnet | |
NEUTRON_ROUTER_IP=$(openstack router show router1 | grep external_gateway_info | awk -F'|' '{ print $3 }' | jq -r '.external_fixed_ips[0].ip_address') | |
PRIVATE_SUBNET_CIDR=$(openstack subnet show private-subnet -c cidr -f value) | |
sudo ip route add 172.21.1.0/24 via $NEUTRON_ROUTER_IP dev br-ex | |
sudo ip route add 172.21.2.0/24 via $NEUTRON_ROUTER_IP dev br-ex | |
sudo ip route add $PRIVATE_SUBNET_CIDR via $NEUTRON_ROUTER_IP dev br-ex | |
CIRROS_IMAGE=$(openstack image list --sort name:desc | grep -m 1 cirros | awk '{print $2}') | |
openstack keypair create --public-key /scripts/webservers/webserver_ssh_key.pub webserver_ssh_key | |
openstack server create --key-name webserver_ssh_key --image $CIRROS_IMAGE --flavor 1 --nic net-id=$TENANT_NET_1_ID webserver1 | |
openstack server create --key-name webserver_ssh_key --image $CIRROS_IMAGE --flavor 1 --nic net-id=$TENANT_NET_2_ID webserver2 | |
wait_for_nova_active "webserver1" | |
wait_for_nova_active "webserver2" | |
echo "Instances booted" | |
IP1=$(openstack server show -c addresses -f value webserver1 | awk 'BEGIN {RS=";"}{match($0, /tenant-1-net=(.*)/, arr); printf "%s", arr[1]}'|tr -d '\n') | |
IP2=$(openstack server show -c addresses -f value webserver2 | awk 'BEGIN {RS=";"}{match($0, /tenant-2-net=(.*)/, arr); printf "%s", arr[1]}'|tr -d '\n') | |
ssh-keygen -R ${IP1} | |
ssh-keygen -R ${IP2} | |
# Keep trying to copy the script until sshd is up | |
until scp -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no /scripts/newcountingwebserver.sh cirros@${IP1}:webserver.sh | |
do | |
sleep 1 | |
done | |
until scp -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no /scripts/newcountingwebserver.sh cirros@${IP2}:webserver.sh | |
do | |
sleep 1 | |
done | |
ssh -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no cirros@${IP1} chmod 700 webserver.sh | |
ssh -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no cirros@${IP2} chmod 700 webserver.sh | |
ssh -o UserKnownHostsFile=/dev/null -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no -q cirros@${IP1} "screen -d -m sh webserver.sh" | |
ssh -o UserKnownHostsFile=/dev/null -i /scripts/webservers/webserver_ssh_key -o StrictHostKeyChecking=no -q cirros@${IP2} "screen -d -m sh webserver.sh" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment