github.com/sentienttechnologies/studio-go-runner@v0.0.0-20201118202441-6d21f2ced8ee/cloud/aws/install.sh (about) 1 #!/bin/bash -x 2 [ -z "$MINIO_ACCESS_KEY" ] && { echo "The MINIO_ACCESS_KEY, and MINIO_SECRET_KEY environment variables must be defined."; exit -1 ; } 3 [ -z "$MINIO_SECRET_KEY" ] && { echo "The MINIO_ACCESS_KEY, and MINIO_SECRET_KEY environment variables must be defined."; exit -1 ; } 4 [ -z "$RMQ_ADMIN_PASSWORD" ] && { echo "The RMQ_ADMIN_PASSWORD, and RMQ_USER_PASSWORD environment variables must be defined."; exit -1 ; } 5 [ -z "$RMQ_USER_PASSWORD" ] && { echo "The RMQ_ADMIN_PASSWORD, and RMQ_USER_PASSWORD environment variables must be defined."; exit -1 ; } 6 7 [ -z "$minio_resource_group" ] && minio_resource_group=`wget -O - https://frightanic.com/goodies_content/docker-names.php -q` 8 aws resource-groups get-group --group-name $minio_resource_group 2>/dev/null 1>&2 9 ERRCODE=$? 10 [[ $ERRCODE -ne 0 ]] || \ 11 { echo "The resource group" $minio_resource_group "was already present. This is unexpected."; exit -1 ; } 12 13 [ -z "$rmq_resource_group" ] && rmq_resource_group=`wget -O - https://frightanic.com/goodies_content/docker-names.php -q` 14 aws resource-groups get-group --group-name $rmq_resource_group 2>/dev/null 1>&2 15 ERRCODE=$? 16 [[ $ERRCODE -ne 0 ]] || \ 17 { echo "The resource group" $rmq_resource_group "was already present. This is unexpected."; exit -1 ; } 18 19 mkdir -p installer/aws/minio 20 mkdir -p installer/aws/rabbitmq 21 wget -q -O installer/aws/minio/README.md https://raw.githubusercontent.com/leaf-ai/studio-go-runner/feature/233_kustomize/cloud/aws/minio/README.md 22 wget -q -O installer/aws/minio/user-data https://raw.githubusercontent.com/leaf-ai/studio-go-runner/feature/233_kustomize/cloud/aws/minio/user-data 23 wget -q -O installer/aws/rabbitmq/README.md https://raw.githubusercontent.com/leaf-ai/studio-go-runner/feature/233_kustomize/cloud/azure/rabbitmq/README.md 24 wget -q -O installer/aws/rabbitmq/user-data https://raw.githubusercontent.com/leaf-ai/studio-go-runner/feature/233_kustomize/cloud/azure/rabbitmq/user-data 25 aws_region="$(aws configure get region)" 26 aws_zones="$(aws ec2 describe-availability-zones --query 'AvailabilityZones[].ZoneName' --output text | awk -v OFS="," '$1=$1')" 27 ami_id=`aws ec2 describe-images --owners 099720109477 --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-????????' 'Name=state,Values=available' --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' --output text` 28 IFS=',' read -ra aws_zones_array <<< "$aws_zones" 29 aws_rand_zone=${aws_zones_array[$RANDOM % ${#aws_zones_array[@]} ]} 30 unset IFS 31 echo "n" | ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa 32 export PUBLIC_KEY=`cat ~/.ssh/id_rsa.pub` 33 # More information concerning the discover of AMI IDs can be found at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html#finding-an-ami-aws-cli 34 aws ec2 describe-key-pairs --key-names Studio-Go-Runner-$USER 2>/dev/null 1>&2 35 ERRCODE=$? 36 [[ $ERRCODE -eq 0 ]] || \ 37 aws ec2 import-key-pair --key-name Studio-Go-Runner-$USER --public-key-material=$PUBLIC_KEY 2>/dev/null 1>&2 38 39 echo -e "\nUsing minio resource group" $minio_resource_group 40 # 41 query=`echo '{"Type":"TAG_FILTERS_1_0", "Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Group\", \"Values\":[\"${minio_resource_group}\"]}]}"}' | envsubst` 42 minio_aws_tags="ResourceType=instance,Tags=[{Key=Name,Value=Studio-Go-Runner-${USER}-minio},{Key=Group,Value=${minio_resource_group}}]" 43 # 44 envsubst < installer/aws/minio/user-data > minio-user-data-$minio_resource_group 45 aws resource-groups create-group --name $minio_resource_group --resource-query "${query}" 1>/dev/null 46 aws ec2 create-security-group --group-name $minio_resource_group --description "Security Group for the minio instance to allow the minio S3 service port (9000)" 47 aws ec2 authorize-security-group-ingress --group-name $minio_resource_group --protocol tcp --port 9000 --cidr 0.0.0.0/0 48 aws ec2 run-instances --image-id $ami_id --key-name Studio-Go-Runner-$USER --security-groups $minio_resource_group \ 49 --instance-type t3a.large --count 1 \ 50 --placement AvailabilityZone=$aws_rand_zone \ 51 --tag-specifications ${minio_aws_tags} \ 52 --block-device-mappings DeviceName=/dev/sdf,Ebs={VolumeSize=100} \ 53 --user-data file://minio-user-data-$minio_resource_group 54 ### aws resource-groups delete-group --group-name $minio_resource_group ; aws ec2 delete-security-group --group-name $minio_resource_group 55 # 56 #envsubst < installer/azure/rabbitmq/user-data > rabbitmq-user-data-$storage_account 57 #az group create --name rabbitMQ --location $LOCATION 58 #az storage account create --resource-group rabbitMQ --name $storage_account --sku standard_lrs 59 #az vm create --name rabbitMQ --resource-group rabbitMQ --location eastus --os-disk-size-gb 128 --boot-diagnostics-storage $storage_account --authentication-type ssh --generate-ssh-keys --image Canonical:UbuntuServer:18.04-LTS:latest --public-ip-address-allocation static --size Standard_D4s_v3 --custom-data rabbitmq-user-data-$storage_account -o none 60 #export RMQ_ADDRESS=$(az network public-ip list --resource-group rabbitMQ --query "[].ipAddress" --output tsv) 61 #az vm open-port --port 15672 --resource-group rabbitMQ --name rabbitMQ --priority 500 62 #az vm open-port --port 5672 --resource-group rabbitMQ --name rabbitMQ --priority 501 63 #echo "RabbitMQ IP Address" $RMQ_ADDRESS "Minio server IP Address" $MINIO_ADDRESS 64 65 #aws ec2 run-instances --image-id ami-09c6723c6c24250c9 --count 1 --instance-type t2.small --key-name donn-leaf --subnet-id subnet-f8e5d08e --security-group-ids sg-0d0b196158c59584d --user-data file://launchscript.txt --profile leafdev --region us-west-2 66 echo -e "\nUsing rabbitMQ resource group" $rmq_resource_group 67 # 68 query=`echo '{"Type":"TAG_FILTERS_1_0", "Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Group\", \"Values\":[\"${rmq_resource_group}\"]}]}"}' | envsubst` 69 rmq_aws_tags="ResourceType=instance,Tags=[{Key=Name,Value=Studio-Go-Runner-${USER}-rabbitMQ},{Key=Group,Value=${rmq_resource_group}}]" 70 # 71 envsubst < installer/aws/rabbitmq/user-data > rmq-user-data-$rmq_resource_group 72 aws resource-groups create-group --name $rmq_resource_group --resource-query "${query}" 1>/dev/null 73 aws ec2 create-security-group --group-name $rmq_resource_group --description "Security Group for the minio instance to allow the minio S3 service port (9000)" 74 aws ec2 authorize-security-group-ingress --group-name $rmq_resource_group --protocol tcp --port 22 --cidr 0.0.0.0/0 75 aws ec2 authorize-security-group-ingress --group-name $rmq_resource_group --protocol tcp --port 5672 --cidr 0.0.0.0/0 76 aws ec2 authorize-security-group-ingress --group-name $rmq_resource_group --protocol tcp --port 15672 --cidr 0.0.0.0/0 77 aws ec2 run-instances --image-id $ami_id --key-name Studio-Go-Runner-$USER --security-groups $rmq_resource_group \ 78 --instance-type t3a.2xlarge --count 1 \ 79 --placement AvailabilityZone=$aws_rand_zone \ 80 --tag-specifications ${rmq_aws_tags} \ 81 --user-data file://rmq-user-data-$rmq_resource_group