From 911e499e9ca08101f6fc368a04d51683951833d0 Mon Sep 17 00:00:00 2001 From: JustFiesta Date: Tue, 21 May 2024 13:19:13 +0200 Subject: [PATCH] Adding tags on recource creation --- prepare_aws_enviroment.sh | 82 +++++++++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 30 deletions(-) diff --git a/prepare_aws_enviroment.sh b/prepare_aws_enviroment.sh index b26c95edd..a439677d4 100644 --- a/prepare_aws_enviroment.sh +++ b/prepare_aws_enviroment.sh @@ -26,43 +26,52 @@ read -p "Enter Elastic IP name: " EIP_NAME && export EIP_NAME read -p "Enter key pair name: " KEY_PAIR_NAME && export KEY_PAIR_NAME -# Create VPC -echo "---------------------------------------" - echo "Creating VPC..." -VPC_ID=$(aws ec2 create-vpc --cidr-block 10.0.0.0/16 --region "$REGION" --query 'Vpc.VpcId' --output text) +VPC_ID=$(aws ec2 create-vpc \ + --cidr-block 10.0.0.0/16 \ + --region "$REGION" \ + --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value='"$VPC_NAME"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --query 'Vpc.VpcId' \ + --output text) if [ -z "$VPC_ID" ]; then echo "Error during VPC creation." exit 1 fi -echo "VPC with ID $VPC_ID has been created." +echo "VPC with ID $VPC_ID has been created and tagged." -# Add tags to VPC -aws ec2 create-tags --resources "$VPC_ID" --tags Key=Name,Value="$VPC_NAME" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" echo "VPC is now correctly configured." # Create Subnet echo "---------------------------------------" echo "Creating Subnet..." -SUBNET_ID=$(aws ec2 create-subnet --vpc-id "$VPC_ID" --cidr-block 10.0.0.0/24 --availability-zone "$REGION"a --query 'Subnet.SubnetId' --output text) +SUBNET_ID=$(aws ec2 create-subnet \ + --vpc-id "$VPC_ID" \ + --cidr-block 10.0.0.0/24 \ + --availability-zone "$REGION"a \ + --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value='"$VPC_NAME-Subnet"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --query 'Subnet.SubnetId' \ + --output text) if [ -z "$SUBNET_ID" ]; then echo "Error during Subnet creation." exit 1 fi -echo "Subnet with ID $SUBNET_ID has been created." +echo "Subnet with ID $SUBNET_ID has been created and tagged." -# Add tags to Subnet -aws ec2 create-tags --resources "$SUBNET_ID" --tags Key=Name,Value="$VPC_NAME-Subnet" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" echo "Subnet is now correctly configured." # Create Elastic Container Registry (ECR) echo "---------------------------------------" echo "Creating Elastic Container Registry (ECR)..." -ECR_REPO_JSON=$(aws ecr create-repository --repository-name "$ECR_NAME" --region "$REGION" --query 'repository' --output json) +ECR_REPO_JSON=$(aws ecr create-repository \ + --repository-name "$ECR_NAME" \ + --region "$REGION" \ + --tag-specifications 'ResourceType=repository,Tags=[{Key=Name,Value='"$ECR_NAME"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --query 'repository' \ + --output json) ECR_REPO_URI=$(echo "$ECR_REPO_JSON" | jq -r '.repositoryUri') ECR_REPO_ARN=$(echo "$ECR_REPO_JSON" | jq -r '.repositoryArn') @@ -72,15 +81,19 @@ if [ -z "$ECR_REPO_URI" ] || [ -z "$ECR_REPO_ARN" ]; then fi echo "ECR repository created: $ECR_REPO_URI" -# Add tags to Elastic Container Registry -aws ecr tag-resource --resource-arn "$ECR_REPO_ARN" --tags Key=Name,Value="$ECR_NAME" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" echo "Tags added to ECR repository." # Create Security Group echo "---------------------------------------" echo "Creating Security Group..." -SECURITY_GROUP_ID=$(aws ec2 create-security-group --group-name "$SECURITY_GROUP_NAME" --description "Security group for devOps internship assesment" --vpc-id "$VPC_ID" --region "$REGION" --output text) +SECURITY_GROUP_ID=$(aws ec2 create-security-group \ + --group-name "$SECURITY_GROUP_NAME" \ + --description "Security group for devOps internship assesment" \ + --vpc-id "$VPC_ID" \ + --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value='"$SECURITY_GROUP_NAME"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --region "$REGION" \ + --output text) if [ -z "$SECURITY_GROUP_ID" ]; then echo "Error during Security Group creation." @@ -88,12 +101,15 @@ if [ -z "$SECURITY_GROUP_ID" ]; then fi echo "Security Group with ID $SECURITY_GROUP_ID has been created." -# Add tags to Security Group -aws ec2 create-tags --resources "$SECURITY_GROUP_ID" --tags Key=Name,Value="$SECURITY_GROUP_NAME" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" echo "Security Group is now correctly configured." # Allow inbound SSH access (port 22) from anywhere -aws ec2 authorize-security-group-ingress --group-id "$SECURITY_GROUP_ID" --protocol tcp --port 22 --cidr 0.0.0.0/0 --region "$REGION" +aws ec2 authorize-security-group-ingress \ + --group-id "$SECURITY_GROUP_ID" \ + --protocol tcp \ + --port 22 \ + --cidr 0.0.0.0/0 \ + --region "$REGION" echo "Inbound SSH access has been allowed for Security Group." @@ -113,7 +129,19 @@ newgrp docker EOF ) -INSTANCE_ID=$(aws ec2 run-instances --image-id ami-0ac67a26390dc374d --count 1 --instance-type t3.micro --key-name "$KEY_PAIR_NAME" --security-group-ids "$SECURITY_GROUP_ID" --subnet-id "$SUBNET_ID" --region "$REGION" --user-data "$USER_DATA_SCRIPT" --iam-instance-profile Name=allow_ec2_ecr --query 'Instances[0].InstanceId' --output text) +INSTANCE_ID=$(aws ec2 run-instances \ + --image-id ami-0ac67a26390dc374d \ + --count 1 \ + --instance-type t3.micro \ + --key-name "$KEY_PAIR_NAME" \ + --security-group-ids "$SECURITY_GROUP_ID" \ + --subnet-id "$SUBNET_ID" \ + --region "$REGION" \ + --user-data "$USER_DATA_SCRIPT" \ + --iam-instance-profile Name=allow_ec2_ecr \ + --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value='"$INSTANCE_NAME"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --query 'Instances[0].InstanceId' \ + --output text) export INSTANCE_ID if [ -z "$INSTANCE_ID" ]; then @@ -122,8 +150,6 @@ if [ -z "$INSTANCE_ID" ]; then fi echo "EC2 instance with ID $INSTANCE_ID has been created." -# Add tags to EC2 instance -aws ec2 create-tags --resources "$INSTANCE_ID" --tags Key=Name,Value="$INSTANCE_NAME" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" echo "EC2 instance is now correctly configured." @@ -131,7 +157,11 @@ echo "EC2 instance is now correctly configured." echo "---------------------------------------" echo "Allocating and associating public IP address with EC2 instance..." -EIP_ALLOCATION_JSON=$(aws ec2 allocate-address --domain vpc --region "$REGION" --output json) +EIP_ALLOCATION_JSON=$(aws ec2 allocate-address \ + --domain vpc \ + --region "$REGION" \ + --tag-specifications 'ResourceType=elastic-ip,Tags=[{Key=Name,Value='"$EIP_NAME"'}{Key=Owner,Value='"$OWNER"'}{Key=Project,Value='"$PROJECT"'}]' \ + --output json) # Check if the allocation was successful if [ $? -ne 0 ]; then @@ -160,14 +190,6 @@ fi echo "Public IP address has been associated with EC2 instance: $PUBLIC_IP" -# Add tags to the Elastic IP -aws ec2 create-tags --resources "$EIP_ALLOCATION_ID" --tags Key=Name,Value="$EIP_NAME" Key=Owner,Value="$OWNER" Key=Project,Value="$PROJECT" --region "$REGION" - -if [ $? -ne 0 ]; then - echo "Error during tagging Elastic IP." - exit 1 -fi - echo "Tags added to Elastic IP."