Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #PREFIX='myprefix-'
  4. PREFIX='test1'
  5. ROUTER_NAME="${PREFIX}border-router"
  6. PRIVATE_NETWORK_NAME="pe1private-net"
  7. PRIVATE_SUBNET_NAME="pe1private-subnet"
  8. SSH_KEY_NAME="${PREFIX}first-instance-key"
  9. INSTANCE_NAME="${PREFIX}first-instance"
  10. SECURITY_GROUP_NAME="${PREFIX}first-instance-sg"
  11. # Network portion of /24 you wish to use in the subnet
  12. NETWORK="192.168.1"
  13. POOL_START_OCT="10"
  14. POOL_END_OCT="200"
  15. FLAVOR_NAME="m1.small"
  16. IMAGE_NAME="Ubuntu Xenial 16.04"
  17. SSH_PUBLIC_KEY=~/.ssh/id_rsa.pub
  18. CC_NAMESERVER_1=8.8.8.8
  19. CC_NAMESERVER_2=8.8.4.4
  20.  
  21. # valid ip function
  22. valid_ip() {
  23. regex="\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
  24. echo "$1" | egrep "$regex" &>/dev/null
  25. return $?
  26. }
  27.  
  28. echo Finding your external ip:
  29. hash dig 2>/dev/null && {
  30. CC_REMOTE_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
  31. }
  32. for curl_ip in http://ipinfo.io/ip http://ifconfig.me/ip http://curlmyip.com; do
  33. CC_REMOTE_IP=$( curl -s $curl_ip )
  34. if valid_ip "$CC_REMOTE_IP"; then
  35. break
  36. fi
  37. done
  38.  
  39. if ! valid_ip "$CC_REMOTE_IP"; then
  40. echo "Could not determine your external IP address, please find it and edit CC_REMOTE_IP before proceeding";
  41. exit 1;
  42. fi
  43. echo "$CC_REMOTE_IP"
  44. CC_REMOTE_CIDR_NETWORK="$CC_REMOTE_IP/32"
  45.  
  46. # everything is in order, lets build a stack!
  47. echo Creating a new router:
  48. openstack --insecure router create $ROUTER_NAME
  49.  
  50. echo Setting router gateway.
  51. openstack --insecure router set $ROUTER_NAME
  52.  
  53. echo Creating a new private network:
  54. openstack --insecure network create "$PRIVATE_NETWORK_NAME"
  55.  
  56. echo Creating a router interface on the subnet.
  57. openstack --insecure router add subnet "$ROUTER_NAME" "pe1private-subnet"
  58.  
  59. echo Selecting a flavour.
  60. CC_FLAVOR_ID=$( openstack --insecure flavor show "$FLAVOR_NAME" -f value -c id )
  61.  
  62. echo Selecting an image.
  63. CC_IMAGE_ID=$( openstack --insecure image show "$IMAGE_NAME" -f value -c id )
  64.  
  65. echo Uploading a key:
  66. openstack --insecure keypair create --public-key $SSH_PUBLIC_KEY $SSH_KEY_NAME
  67.  
  68. echo Getting network ids.
  69. CC_PUBLIC_NETWORK_ID=$( openstack --insecure network show vlan1288 -f value -c id )
  70. CC_PRIVATE_NETWORK_ID=$( openstack --insecure network show "$PRIVATE_NETWORK_NAME" -f value -c id )
  71.  
  72. echo Creating security group:
  73. openstack --insecure security group create --description 'Network access for our first instance.' "$SECURITY_GROUP_NAME"
  74.  
  75. echo Getting security group id.
  76. CC_SECURITY_GROUP_ID=$( openstack --insecure security group show "$SECURITY_GROUP_NAME" -f value -c id )
  77.  
  78. echo Creating security group rule for ssh access:
  79. openstack --insecure security group rule create \
  80. --ingress \
  81. --protocol tcp \
  82. --dst-port 22 \
  83. --remote-ip "$CC_REMOTE_CIDR_NETWORK" \
  84. "$CC_SECURITY_GROUP_ID"
  85.  
  86. echo Creating security group rule for icmp access:
  87. openstack --insecure security group rule create \
  88. --ingress \
  89. --protocol icmp \
  90. --remote-ip "$CC_REMOTE_CIDR_NETWORK" \
  91. "$CC_SECURITY_GROUP_ID"
  92.  
  93. echo Booting first instance:
  94. openstack --insecure server create \
  95. --flavor "$CC_FLAVOR_ID" \
  96. --image "$CC_IMAGE_ID" \
  97. --key-name "$SSH_KEY_NAME" \
  98. --security-group default \
  99. --security-group "$SECURITY_GROUP_NAME" \
  100. --nic "net-id=$CC_PRIVATE_NETWORK_ID" \
  101. "$INSTANCE_NAME"
  102.  
  103. INSTANCE_STATUS=$( openstack --insecure server show "$INSTANCE_NAME" -f value -c status )
  104.  
  105. sleep 10;
  106.  
  107. echo You can now connect to your instance using the following command:
  108. echo "ssh ubuntu@$CC_PUBLIC_IP";
  109. sleep 50;
  110. echo Sending the mysql script to the instance and giving it execute rights
  111. sudo scp installMysql.sh ubuntu@$CC_PUBLIC_IP:~/installMysql.sh
  112. ssh ubuntu@$CC_PUBLIC_IP 'chmod u+x installMysql.sh'
  113. ssh ubuntu@$CC_PUBLIC_IP './installMysql.sh'
  114. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement