From c52cb8a6d8844ad1dd0e16eaaaa001038cc8253e Mon Sep 17 00:00:00 2001 From: Aditya <60684641+0x0elliot@users.noreply.github.com> Date: Wed, 20 Nov 2024 17:46:39 +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 [![CodeQL](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml/badge.svg?branch=launch)](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml) [![Autobuild](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml/badge.svg?branch=launch)](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml) -[![Deploy to Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/0x0elliot/Shuffle&ref=2.0.0) +[![Deploy to AWS](https://d1.awsstatic.com/cloudformation-deploy-to-aws-button.png)](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