-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsql-study.yml
More file actions
146 lines (136 loc) · 4.1 KB
/
Copy pathsql-study.yml
File metadata and controls
146 lines (136 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
AWSTemplateFormatVersion: "2010-09-09"
Description: "StudySQLHandsOn on EC2"
Parameters:
AdminEmail:
Type: String
Description: The admin email
AdminPassword:
Type: String
Description: The admin password
VpcCidrBlock:
Type: String
Description: The CIDR block for the VPC
SubnetCidrBlock:
Type: String
Description: The CIDR block for the Subnet
Resources:
# VPC
SqlStudyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCidrBlock
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: "Name"
Value: "SQL-Study-VPC"
# Subnet
SqlStudyPublicSubnet:
Type: "AWS::EC2::Subnet"
Properties:
VpcId: !Ref SqlStudyVPC
CidrBlock: !Ref SubnetCidrBlock
MapPublicIpOnLaunch: true
Tags:
- Key: "Name"
Value: "SQL-Study-PublicSubnet"
# InternetGateway
SqlStudyInternetGateway:
Type: "AWS::EC2::InternetGateway"
Properties:
Tags:
- Key: "Name"
Value: "SQL-Study-IGW"
AttachIGW:
Type: "AWS::EC2::VPCGatewayAttachment"
Properties:
VpcId: !Ref SqlStudyVPC
InternetGatewayId: !Ref SqlStudyInternetGateway
# Network/Public
SqlStudyPublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref SqlStudyVPC
Tags:
- Key: "Name"
Value: "SQL-Study-PublicRouteTable"
SqlStudyPublicRoute:
Type: AWS::EC2::Route
DependsOn: SqlStudyInternetGateway
Properties:
RouteTableId: !Ref SqlStudyPublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref SqlStudyInternetGateway
PublicSubnetRouteTableAssociation:
Type: "AWS::EC2::SubnetRouteTableAssociation"
Properties:
SubnetId: !Ref SqlStudyPublicSubnet
RouteTableId: !Ref SqlStudyPublicRouteTable
#EC2
SqlStudyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: ami-02a405b3302affc24 # amazon linux 2023
InstanceType: t2.micro
SubnetId: !Ref SqlStudyPublicSubnet
IamInstanceProfile: !Ref SqlStudyInstanceProfile
VpcId: !Ref SqlStudyVPC
SecurityGroupIds:
- !GetAtt SqlStudySecurityGroup.GroupId
UserData:
Fn::Base64: !Sub |
#!/bin/bash
sudo dnf install -y docker
sudo systemctl enable --now docker
sudo usermod -aG docker ec2-user
DOCKER_CONFIG=${!DOCKER_CONFIG:-/usr/local/lib/docker}
sudo mkdir -p ${!DOCKER_CONFIG}/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o ${!DOCKER_CONFIG}/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
sudo dnf install -y git
cd ~
git clone https://github.com/tcf775/SQL.git
cd SQL
sed -i 's/#admin_email/${AdminEmail}/g' docker-compose.yml
sed -i 's/#admin_password/${AdminPassword}/g' docker-compose.yml
docker compose up -d
Tags:
- Key: "Name"
Value: "SQL-Study-EC2-Instance"
SqlStudyInstanceProfile:
Type: 'AWS::IAM::InstanceProfile'
Properties:
Roles:
- !Ref SqlStudyInstanceRole
SqlStudyInstanceRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: ec2.amazonaws.com
Action: 'sts:AssumeRole'
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore'
Tags:
- Key: "Name"
Value: "SQL-Study-InstanceRole"
SqlStudySecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
VpcId: !Ref SqlStudyVPC
GroupDescription: Enable access to port 3000
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 3000
ToPort: 3000
CidrIp: 0.0.0.0/0
Tags:
- Key: "Name"
Value: "SQL-Study-SecurityGroup"
Outputs:
InstanceUrl:
Description: The URL of the EC2 instance
Value: !Sub "http://${SqlStudyEC2Instance.PublicDnsName}:3000"