위 그림과 같이 만들어볼건데, RDS는 추후에 하도록 하겠다
오늘은 APM 설치되어있는 EC2 생성까지만
기본적인 VPC 설정에 대한 설명은 생략하겠다
전체 코드는 밑에 있으니 설명이 필요한 사람은 이전 글을 보고 오자
1. Security Group
SGforWeb:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: allow 22, 80
GroupName: webaccess
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
VpcId: !Ref VPC
SGforDB:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: allow webserver
GroupName: dbaccess
SecurityGroupIngress:
- IpProtocol: -1
SourceSecurityGroupId : !GetAtt SGforWeb.GroupId
VpcId: !Ref VPC
웹서버용, DB용 2개를 만들었다
인바운드(AWS::EC2::SecurityGroupIngress), 아웃바운드(AWS::EC2::SecurityGroupEgress) 규칙을 따로 만들어서 붙일 수도 있다
웹서버용에선 ssh(22)와 http(80)를 허용해줬고, DB용에선 웹서버용SG만 허용해줬다( -1은 모든 프로토콜 지정 )
2. 웹서버용 EC2
Parameters:
KeyName:
Description: Name of KeyPair
Type: AWS::EC2::KeyPair::KeyName
AMI:
Description: AMI of EC2
Type: AWS::EC2::Image::Id
Default: ami-0094965d55b3bb1ff
Resources:
EC2forWeb:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref AMI
KeyName: !Ref KeyName
AvailabilityZone: !GetAtt PublicSubnet.AvailabilityZone
InstanceType: t3.micro
SubnetId: !Ref PublicSubnet
SecurityGroupIds:
- !Ref SGforWeb
UserData:
Fn::Base64:
!Join [ "", [
"#!/bin/bash\n",
"#Install APM for Web Server\n",
"yum install -y mariadb* php httpd php-mysql\n",
"systemctl enable httpd mariadb\n",
"systemctl start httpd mariadb\n"] ]
Tags:
- Key: Name
Value: Web Server
Key와 는 각자, 리전별로 갖고있는 키를 바로 쓸 수 있도록 Parameter로 설정했다
ami도 리전별로 원하는 os별로 다르기 때문에 파라미터로 넣었지만, 드롭다운 값 목록을 표시하지 않기 때문에 디폴트값을 넣어줬다
내가 넣은 ami는 서울 리전의 Amazon Linux 2 이다
참고로 보안그룹 아이디는 !Ref SGforWeb
말고 !GetAtt SGforWeb.GroupId
도 가능하다
APM을 설치해놓도록 UserData도 추가해줬다
Fn::Base64는 UserData값을 인코딩해서 EC2 인스턴스에 전달해주는 내장함수이고,
Fn::Join은 리스트의 값들을 단일 문자열로 생성해주는 내장함수이다
네트워크 인터페이스를 붙이고 싶으면 Instance NetworkInterface 속성을 사용하면 된다
이제 완성된 파일을 가지고 스택을 생성해보자
스택 생성이 완료되면, EC2가 하나 생성되어 있다
이녀석의 퍼블릭IP주소 또는 DNS를 복사해서 웹브라우저에 검색해보면
Apache가 뜬다
들어가서 확인도 해보자
httpd랑 mysql이 잘 돌고 있다
rds 연동까지 하는건 다음에 하도록 하겠다
끝
'공부 > IaC' 카테고리의 다른 글
[AWS CloudFormation] #5 RDS 생성하기 (for MySQL) (0) | 2021.01.06 |
---|---|
[AWS CloudFormation] #4 mapping 사용하기 (EC2 AMI) (0) | 2021.01.06 |
[AWS CloudFormation] #2 파라미터 사용하기 (VPC 구성) (0) | 2021.01.05 |
[AWS CloudFormation] #1 간단 VPC 구성 (VPC, Subnet, IGW, NAT, RT) (0) | 2021.01.05 |
[AWS CloudFormation] #0 실습 전 개념 정리 (0) | 2021.01.04 |
댓글