From 170399c54f1fdea7279e9cfc8ce5af493933ab41 Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Wed, 3 Jul 2019 00:26:43 +0200 Subject: [PATCH] fixed db creation --- .../aws-boto3-rds-db/start.py | 117 ++++++++---------- .../aws-boto3-rds-db/stop.py | 60 +++++---- 2 files changed, 88 insertions(+), 89 deletions(-) diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py index 228d579..ab44822 100644 --- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py +++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/start.py @@ -1,3 +1,5 @@ +import time + import boto3 from botocore.exceptions import ClientError @@ -6,27 +8,7 @@ availabilityZone = 'eu-central-1b' imageId = 'ami-0cc293023f983ed53' instanceType = 't3.nano' keyName = 'srieger-pub' -#userDataDB = ('#!/bin/bash\n' -# '#!/bin/bash\n' -# '# extra repo for RedHat rpms\n' -# 'yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n' -# '# essential tools\n' -# 'yum install -y joe htop git\n' -# '# mysql\n' -# 'yum install -y mariadb mariadb-server\n' -# '\n' -# 'service mariadb start\n' -# '\n' -# 'echo "create database cloud_tug_of_war" | mysql -u root\n' -# '\n' -# 'echo "create table clouds ( cloud_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, value INT, max_value INT, PRIMARY KEY (cloud_id))" | mysql -u root cloud_tug_of_war\n' -# '\n' -# 'echo "CREATE USER \'cloud_tug_of_war\'@\'%\' IDENTIFIED BY \'cloud\';" | mysql -u root\n' -# 'echo "GRANT ALL PRIVILEGES ON cloud_tug_of_war.* TO \'cloud_tug_of_war\'@\'%\';" | mysql -u root\n' -# 'echo "FLUSH PRIVILEGES" | mysql -u root\n' -# ) - -# convert with: cat install-mysql | sed "s/^/'/; s/$/\\\n'/" + client = boto3.setup_default_session(region_name=region) ec2Client = boto3.client("ec2") @@ -46,7 +28,7 @@ subnet_id = ec2Client.describe_subnets( print("Deleting old instance...") print("------------------------------------") -response = ec2Client.describe_instances(Filters=[{'Name': 'tag-key', 'Values': ['tug-of-war']}]) +response = ec2Client.describe_instances(Filters=[{'Name': 'tag-key', 'Values': ['tug-of-war-rds']}]) print(response) reservations = response['Reservations'] for reservation in reservations: @@ -61,46 +43,46 @@ print("Deleting old DB instance...") print("------------------------------------") try: - response = rdsClient.delete_db_instance( - DBInstanceIdentifier='tug-of-war-db1', - SkipFinalSnapshot=True, - DeleteAutomatedBackups=True - ) + response = rdsClient.delete_db_instance( + DBInstanceIdentifier='tug-of-war-rds-db1', + SkipFinalSnapshot=True, + DeleteAutomatedBackups=True + ) except ClientError as e: - print(e) + print(e) waiter = rdsClient.get_waiter('db_instance_deleted') -waiter.wait(DBInstanceIdentifier='tug-of-war-db1') - +waiter.wait(DBInstanceIdentifier='tug-of-war-rds-db1') +#time.sleep(5) print("Delete old security group...") print("------------------------------------") try: - response = ec2Client.delete_security_group(GroupName='tug-of-war') + response = ec2Client.delete_security_group(GroupName='tug-of-war-rds') except ClientError as e: - print(e) + print(e) print("Create security group...") print("------------------------------------") try: - response = ec2Client.create_security_group(GroupName='tug-of-war', - Description='tug-of-war', - VpcId=vpc_id) - security_group_id = response['GroupId'] - print('Security Group Created %s in vpc %s.' % (security_group_id, vpc_id)) - - data = ec2Client.authorize_security_group_ingress( - GroupId=security_group_id, - IpPermissions=[ - {'IpProtocol': 'tcp', - 'FromPort': 3306, - 'ToPort': 3306, - 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}, - {'IpProtocol': 'tcp', - 'FromPort': 22, + response = ec2Client.create_security_group(GroupName='tug-of-war-rds', + Description='tug-of-war-rds', + VpcId=vpc_id) + security_group_id = response['GroupId'] + print('Security Group Created %s in vpc %s.' % (security_group_id, vpc_id)) + + data = ec2Client.authorize_security_group_ingress( + GroupId=security_group_id, + IpPermissions=[ + {'IpProtocol': 'tcp', + 'FromPort': 3306, + 'ToPort': 3306, + 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}, + {'IpProtocol': 'tcp', + 'FromPort': 22, 'ToPort': 22, 'IpRanges': [{'CidrIp': '0.0.0.0/0'}]}, {'IpProtocol': 'tcp', @@ -119,9 +101,9 @@ except ClientError as e: print("Running new DB instance...") print("------------------------------------") -response = rdsClient.create_db_instance(DBInstanceIdentifier="tug-of-war-db1", +response = rdsClient.create_db_instance(DBInstanceIdentifier="tug-of-war-rds-db1", AllocatedStorage=20, - DBName='tug_of_war', + DBName='cloud_tug_of_war', # Engine='mariadb', Engine='mysql', # General purpose SSD @@ -131,24 +113,28 @@ response = rdsClient.create_db_instance(DBInstanceIdentifier="tug-of-war-db1", # Set this to true later? MultiAZ=False, MasterUsername='cloud_tug_of_war', - MasterUserPassword='cloudcloud', + MasterUserPassword='cloudpass', VpcSecurityGroupIds=[security_group_id], #DBInstanceClass='db.m3.2xlarge', DBInstanceClass='db.t3.micro', Tags=[ - {'Key': 'Name', 'Value': 'tug-of-war-db1'}, - {'Key': 'tug-of-war', 'Value': 'db'} + {'Key': 'Name', 'Value': 'tug-of-war-rds-db1'}, + {'Key': 'tug-of-war-rds', 'Value': 'db'} ], ) waiter = rdsClient.get_waiter('db_instance_available') -waiter.wait(DBInstanceIdentifier='tug-of-war-db1') +waiter.wait(DBInstanceIdentifier='tug-of-war-rds-db1') -#dbArn = response['DBInstance'][0]['DBInstanceArn'] -dbEndpointAddress = response['DBInstance'][0]['Endpoint']['Address'] -dbEndpointPort = response['DBInstance'][0]['Endpoint']['Port'] +response = ec2Client.describe_security_groups(Filters=[{'Name': 'group-name', 'Values': ['tug-of-war-rds']}]) +security_group_id = response.get('SecurityGroups', [{}])[0].get('GroupId', '') -print(dbEndpointAddress + ":" + dbEndpointPort) +response = rdsClient.describe_db_instances(DBInstanceIdentifier='tug-of-war-rds-db1') +print(response) +dbEndpointAddress = response['DBInstances'][0]['Endpoint']['Address'] +dbEndpointPort = response['DBInstances'][0]['Endpoint']['Port'] + +print(str(dbEndpointAddress) + ":" + str(dbEndpointPort)) userDataWebServer = ('#!/bin/bash\n' '# extra repo for RedHat rpms\n' @@ -160,14 +146,19 @@ userDataWebServer = ('#!/bin/bash\n' '\n' 'service httpd start\n' '\n' - 'wget http://mmnet.informatik.hs-fulda.de/cloudcomp/tug-of-war-in-the-clouds.tar.gz\n' - 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n' + # 'wget http://mmnet.informatik.hs-fulda.de/cloudcomp/tug-of-war-in-the-clouds.tar.gz\n' + # 'cp tug-of-war-in-the-clouds.tar.gz /var/www/html/\n' + # 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n' 'cd /var/www/html\n' - 'tar zxvf tug-of-war-in-the-clouds.tar.gz\n' + 'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/index.php\n' + 'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/cloud.php\n' + 'wget https://gogs.informatik.hs-fulda.de/srieger/cloud-computing-msc-ai-examples/raw/master/example-projects/tug-of-war-in-the-clouds/web-content/config.php\n' '\n' '# change hostname of db connection\n' 'sed -i s/localhost/' + dbEndpointAddress + '/g /var/www/html/config.php\n' - 'sed -i s/\\\'cloud\\\'/cloudcloud/g /var/www/html/config.php\n' + '\n' + '# create default table\n' + 'echo "create table clouds ( cloud_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, value INT, max_value INT, PRIMARY KEY (cloud_id))" | mysql -h ' + dbEndpointAddress + ' -u cloud_tug_of_war -pcloudpass cloud_tug_of_war\n' ) for i in range(1, 2): @@ -190,8 +181,8 @@ for i in range(1, 2): { 'ResourceType': 'instance', 'Tags': [ - {'Key': 'Name', 'Value': 'tug-of-war-webserver' + i}, - {'Key': 'tug-of-war', 'Value': 'webserver'} + {'Key': 'Name', 'Value': 'tug-of-war-rds-webserver' + str(i)}, + {'Key': 'tug-of-war-rds', 'Value': 'webserver'} ], } ], diff --git a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/stop.py b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/stop.py index ab42e83..5021e35 100644 --- a/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/stop.py +++ b/example-projects/tug-of-war-in-the-clouds/aws-boto3-rds-db/stop.py @@ -1,43 +1,34 @@ import time + import boto3 from botocore.exceptions import ClientError region = 'eu-central-1' +availabilityZone = 'eu-central-1b' +imageId = 'ami-0cc293023f983ed53' +instanceType = 't3.nano' +keyName = 'srieger-pub' + client = boto3.setup_default_session(region_name=region) ec2Client = boto3.client("ec2") ec2Resource = boto3.resource('ec2') +rdsClient = boto3.client("rds") + response = ec2Client.describe_vpcs() vpc_id = response.get('Vpcs', [{}])[0].get('VpcId', '') - -elbv2Client = boto3.client('elbv2') - -print("Deleting load balancer and deps...") -print("------------------------------------") - -try: - response = elbv2Client.describe_load_balancers(Names=['tug-of-war-loadbalancer']) - loadbalancer_arn = response.get('LoadBalancers', [{}])[0].get('LoadBalancerArn', '') - response = elbv2Client.delete_load_balancer(LoadBalancerArn=loadbalancer_arn) -except ClientError as e: - print(e) - -time.sleep(5) - -try: - response = elbv2Client.describe_target_groups(Names=['tug-of-war-targetgroup']) - targetgroup_arn = response.get('TargetGroups', [{}])[0].get('TargetGroupArn', '') - response = elbv2Client.delete_target_group(TargetGroupArn=targetgroup_arn) -except ClientError as e: - print(e) - - +subnet_id = ec2Client.describe_subnets( + Filters=[ + { + 'Name': 'availability-zone', 'Values': [availabilityZone] + } + ])['Subnets'][0]['SubnetId'] print("Deleting old instance...") print("------------------------------------") -response = ec2Client.describe_instances(Filters=[{'Name': 'tag-key', 'Values': ['tug-of-war']}]) +response = ec2Client.describe_instances(Filters=[{'Name': 'tag-key', 'Values': ['tug-of-war-rds']}]) print(response) reservations = response['Reservations'] for reservation in reservations: @@ -48,10 +39,27 @@ for reservation in reservations: instanceToTerminate = ec2Resource.Instance(instance['InstanceId']) instanceToTerminate.wait_until_terminated() -print("Delete old security group...") +print("Deleting old DB instance...") print("------------------------------------") try: - response = ec2Client.delete_security_group(GroupName='tug-of-war') + response = rdsClient.delete_db_instance( + DBInstanceIdentifier='tug-of-war-rds-db1', + SkipFinalSnapshot=True, + DeleteAutomatedBackups=True + ) except ClientError as e: print(e) + +waiter = rdsClient.get_waiter('db_instance_deleted') +waiter.wait(DBInstanceIdentifier='tug-of-war-rds-db1') + +#time.sleep(5) + +print("Delete old security group...") +print("------------------------------------") + +try: + response = ec2Client.delete_security_group(GroupName='tug-of-war-rds') +except ClientError as e: + print(e) \ No newline at end of file