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