From 7283d1434d14bc9b62623f29fc1eceba20eede56 Mon Sep 17 00:00:00 2001
From: Aditya <60684641+0x0elliot@users.noreply.github.com>
Date: Wed, 20 Nov 2024 17:37:10 +0530
Subject: [PATCH] feat: click to deploy to AWS test
---
README.md | 2 +-
template.yaml | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 100 insertions(+), 1 deletion(-)
create mode 100644 template.yaml
diff --git a/README.md b/README.md
index 1ffc0c29..08362e25 100755
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ Shuffle Automation
[](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml)
[](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml)
-[](https://deploy.cloud.run/?git_repo=https://github.com/0x0elliot/Shuffle&ref=2.0.0)
+[](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=Shuffle-Instance&templateURL=https://raw.githubusercontent.com/Shuffle/Shuffle/refs/heads/2.0.0/template.yaml)
diff --git a/template.yaml b/template.yaml
new file mode 100644
index 00000000..1a4a3c2b
--- /dev/null
+++ b/template.yaml
@@ -0,0 +1,99 @@
+AWSTemplateFormatVersion: '2010-09-09'
+Description: Deploy EC2 instance using a specific AMI, configure a security group with ingress rules for SSH and port 3001, and create VPC and subnet.
+
+Parameters:
+ AMI:
+ Type: String
+ Default: ami-021141a79f4c8fc02 # Default to your AMI ID if needed
+ InstanceType:
+ Type: String
+ Default: t3.large # Default to t3.large
+ VpcCidrBlock:
+ Type: String
+ Default: 10.0.0.0/16 # Default to a private network range
+ SubnetCidrBlock:
+ Type: String
+ Default: 10.0.1.0/24 # Default to a smaller subnet range
+ SecurityGroupName:
+ Type: String
+ Default: ShuffleSG
+
+Resources:
+ # Create the VPC
+ VPC:
+ Type: AWS::EC2::VPC
+ Properties:
+ CidrBlock: !Ref VpcCidrBlock
+ EnableDnsSupport: "true"
+ EnableDnsHostnames: "true"
+ Tags:
+ - Key: Name
+ Value: ShuffleVPC
+
+ # Create the Subnet within the VPC
+ Subnet:
+ Type: AWS::EC2::Subnet
+ Properties:
+ CidrBlock: !Ref SubnetCidrBlock
+ VpcId: !Ref VPC
+ AvailabilityZone: !Select [ 0, !GetAZs '' ]
+ MapPublicIpOnLaunch: "true"
+ Tags:
+ - Key: Name
+ Value: ShuffleSubnet
+
+ # Create the Security Group for the EC2 instance
+ SecurityGroup:
+ Type: AWS::EC2::SecurityGroup
+ Properties:
+ GroupName: !Ref SecurityGroupName
+ VpcId: !Ref VPC
+ SecurityGroupIngress:
+ - IpProtocol: tcp
+ FromPort: 22
+ ToPort: 22
+ CidrIp: 0.0.0.0/0 # Allow SSH from anywhere
+ - IpProtocol: tcp
+ FromPort: 3001
+ ToPort: 3001
+ CidrIp: 0.0.0.0/0 # Allow traffic on port 3001 from anywhere
+
+ # Create an EC2 instance
+ EC2Instance:
+ Type: AWS::EC2::Instance
+ Properties:
+ ImageId: !Ref AMI
+ InstanceType: !Ref InstanceType
+ NetworkInterfaces:
+ - AssociatePublicIpAddress: true
+ DeviceIndex: 0
+ GroupSet:
+ - !Ref SecurityGroup
+ SubnetId: !Ref Subnet
+ Tags:
+ - Key: Name
+ Value: Shuffle AMI Test Instance
+ CpuOptions:
+ CoreCount: 1
+ ThreadsPerCore: 1
+ PrivateDnsNameOptions:
+ HostnameType: "ip-name"
+ EnableResourceNameDnsARecord: true
+ EnableResourceNameDnsAAAARecord: false
+
+Outputs:
+ InstanceId:
+ Description: "Instance ID of the created EC2 instance"
+ Value: !Ref EC2Instance
+ PublicIP:
+ Description: "Public IP address of the EC2 instance"
+ Value: !GetAtt EC2Instance.PublicIp
+ VPCId:
+ Description: "VPC ID"
+ Value: !Ref VPC
+ SubnetId:
+ Description: "Subnet ID"
+ Value: !Ref Subnet
+ SecurityGroupId:
+ Description: "Security Group ID"
+ Value: !Ref SecurityGroup