Guest User

Untitled

a guest
Apr 12th, 2018
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.23 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # This script creates all necessary components to start booting VM's in openstack. This includes
  4. # - Project
  5. # - User
  6. # - Networking, subnets, router,
  7. # Security group allows
  8. # - 22 (SSH)
  9. # - IMPI (Ping test)
  10. # - 80 (Apache)
  11. #
  12. # Execution:
  13. # create_openstack_user.sh John Doe MYPASSWORD jdoe@utsa.edu
  14.  
  15. FIRST_NAME=$1
  16. LAST_NAME=$2
  17. PASSWORD=$3
  18. USER_EMAIL_ADDRESS=$4
  19. firstletter=${FIRST_NAME:0:1}
  20. USER_NAME=$firstletter$LAST_NAME
  21. NAME="$FIRST_NAME $LAST_NAME"
  22.  
  23. PROJECT_NAME=$USER_NAME
  24. NETWORK_NAME="$PROJECT_NAME"_Network
  25. SUBNET_NAME="$PROJECT_NAME"_Subnet
  26. ROUTER_NAME="$PROJECT_NAME"_Router
  27.  
  28. ##############################
  29. if [ $# -ne 4 ]
  30. then
  31. echo ""
  32. echo "Error: Not enough arguments supplied"
  33. echo ""
  34. echo "Usage:"
  35. echo " ./create_openstack_user.sh John Doe MYPASSWORD jdoe@utsa.edu"
  36. echo ""
  37. echo "Username is JDoe"
  38. echo ""
  39. exit
  40. fi
  41.  
  42. ##############################
  43. file="openrc.sh"
  44. if [ -f "$file" ]
  45. then
  46. echo "$file found..."
  47. source $file
  48. else
  49. echo "$file not found."
  50. file="admin-openrc.sh"
  51. if [ -f "$file" ]
  52. then
  53. echo "$file found..."
  54. source $file
  55. else
  56. echo "$file not found."
  57. exit
  58. fi
  59. fi
  60. ##############################
  61.  
  62. python -c "import openstackclient2"
  63. if [ $? -eq 0 ]; then
  64. echo "INFO: openstackclient client installed"
  65. else
  66. echo "FAIL: Please install openstackclient."
  67. echo " pip install python-openstackclient"
  68. exit
  69. fi
  70.  
  71. ##############################
  72. echo "##################################"
  73. echo "# GRABBING EXTERNAL NETWORK INFO #"
  74. echo "##################################"
  75. EXTERNAL_NETWORK_NAME=$(openstack network list --long | grep External | awk '{print $4}')
  76. EXTERNAL_NETWORK_ID=$(openstack network show -f shell "$EXTERNAL_NETWORK_NAME" -c id | cut -d "\"" -f 2)
  77.  
  78.  
  79. ##########################
  80. # Create Project and User
  81. ##########################
  82. echo "##################"
  83. echo "# CREATING GROUP #"
  84. echo "##################"
  85. openstack project create --description "Project for $NAME" "$PROJECT_NAME"
  86. echo "INFO: Creating user..."
  87. openstack user create --project "$PROJECT_NAME" --description "$NAME" --password "$PASSWORD" --email "$USER_EMAIL_ADDRESS" --enable "$USER_NAME"
  88. #keystone user-create --name $USER_NAME --tenant $PROJECT_NAME --pass $PASSWORD --email $USER_EMAIL_ADDRESS --enabled true
  89. #PROJECT_ID=`keystone tenant-get $PROJECT_NAME |grep id |cut -d"|" -f 3 |cut -d" " -f 2`
  90. echo "INFO: Getting project ID..."
  91. PROJECT_ID=$(openstack project show -f shell -c id "$PROJECT_NAME" |cut -d"=" -f2 | tr -d '"')
  92.  
  93. ################################################
  94. # Create Network, Subnet and Router for Project
  95. ################################################
  96. echo "#######################"
  97. echo "# CREATING NETWORKING #"
  98. echo "#######################"
  99. openstack network create --project "$PROJECT_ID" "$NETWORK_NAME"
  100. NETWORK_ID=$(openstack network show -f shell -c id "$NETWORK_NAME" |cut -d"=" -f2 | tr -d '"')
  101.  
  102. echo "INFO: Creating Subnetworking..."
  103. openstack subnet create --project "$PROJECT_ID" --dns-nameserver "129.115.103.72" --subnet-range "192.170.0.0/24" --allocation-pool start=192.170.0.10,end=192.170.0.200 --network "$NETWORK_ID" "$SUBNET_NAME"
  104.  
  105. echo "INFO: Creating router..."
  106. openstack router create --project "$PROJECT_ID" "$ROUTER_NAME"
  107.  
  108. echo "INFO: Acquiring router id..."
  109. ROUTER_ID=$(openstack router show -f shell "$ROUTER_NAME" -c id |cut -d"\"" -f 2)
  110.  
  111. echo "INFO: Setting external gateway on router..."
  112. openstack router set --external-gateway "$EXTERNAL_NETWORK_ID" "$ROUTER_ID"
  113.  
  114. echo "INFO: Adding subnet to router..."
  115. openstack router add subnet "$ROUTER_ID" "$SUBNET_NAME"
  116.  
  117. #neutron net-create --tenant-id $PROJECT_ID $NETWORK_NAME
  118. #neutron subnet-create --tenant-id $PROJECT_ID --name $SUBNET_NAME --dns-nameserver "10.245.0.10" $NETWORK_NAME "192.170.0.0/24"
  119. #neutron router-create --tenant-id $PROJECT_ID $ROUTER_NAME
  120. #ROUTER_ID=`neutron router-show --format shell $ROUTER_NAME -F id |cut -d"\"" -f 2`
  121. #neutron router-gateway-set $ROUTER_ID $EXTERNAL_NETWORK_ID
  122. #neutron router-interface-add $ROUTER_ID $SUBNET_NAME
  123.  
  124. ##################################################
  125. # Add security rules to allow ping and ssh access
  126. ##################################################
  127. echo "#################################"
  128. echo "# UPDATING SECURITY GROUP RULES #"
  129. echo "#################################"
  130.  
  131. SECURITY_GROUP_ID=$(openstack security group list | grep "$PROJECT_ID" | awk '{print $2}')
  132. openstack security group rule create --proto icmp --project "$PROJECT_NAME" "$SECURITY_GROUP_ID"
  133. openstack security group rule create --proto tcp --project "$PROJECT_NAME" --dst-port 22 "$SECURITY_GROUP_ID"
  134. openstack security group rule create --proto tcp --project "$PROJECT_NAME" --dst-port 80 "$SECURITY_GROUP_ID"
  135.  
  136. #nova --os-username $USER_NAME --os-password $PASSWORD --os-tenant-name $PROJECT_NAME secgroup-add-rule default tcp 22 22 "0.0.0.0/0"
  137. #nova --os-username $USER_NAME --os-password $PASSWORD --os-tenant-name $PROJECT_NAME secgroup-add-rule default icmp -1 -1 "0.0.0.0/0"
  138. #nova --os-username $USER_NAME --os-password $PASSWORD --os-tenant-name $PROJECT_NAME secgroup-add-rule default tcp 80 80 "0.0.0.0/0"
  139.  
  140. echo "######################"
  141. echo "Username: $USER_NAME"
  142. echo "Password: $PASSWORD"
  143. echo "######################"
Add Comment
Please, Sign In to add comment