Terraform

22.07.20

가로선 2022. 7. 20. 15:16

   목차   

 

1. AMI 생성

2. ALB

 - ALB 생성

 - Target Group 생성

 - ALB Listener 추가

3. Auto Scaling

 - 시작 구성을 위한 IAM Instance Profile 생성

 - Launch Configuration(시작 구성)

 - Auto Scaling Group 구성

 - ALB에 Attach

4. RDS

 - DB의 Endpoint 확인 및 사전 체크

 - RDS 생성

5. Wordpress 연동 테스트


   AMI 생성   

 - registry.terraform.io에서 aws_ami 확인

 

ami 생성

    - 기존의 인스턴스 아이디를 사용    

    - 인스턴스가 존재해야하므로 depends_on

        - depends_on : 의존성을 명시적으로 선언

 

aws console에서 ami 생성 확인

 

 

   ALB   

 

   ALB 생성   

 - registry.terraform.io에서 aws_lb 확인

 

ALB 생성

    - internal을 false로 설정하여 외부에 공개하는 Load Balancer로 설정

    - dns 출력을 위해 output 추가

 

출력된 dns 확인

 

nslookup 으로 조회

    - 조회가 되어야 접속이 가능하다!

 

AWS Console에서 로드밸런서 생성 확인

 

   Target Group 생성   

 - registry.terraform.io에서 aws_lb_target_group 확인

 

Target Group 생성

    - enabled : 상태확인 활성화 여부(default : true)

    - healthy_threshold : 비정삭적인 대상을 정상으로 간주하기 전에 필요한

                                     연속 상태확인 성공횟수(default : 3)

    - interval : 대상에 대한 상태 확인 사이 시간(최소 5초 ~ 최대 300초)

    - matcher : 대상의 정상적인 응답을 확인할 때 사용하는 응답 코드(200 : 정상 페이지 처리)

    - path : Health Check 요청 대상

    - timeout : 응답이 없는 상대가 상태 확인에 실패했음을 의미하는 시간

    - unhealthy_threshold : 대상을 비정상으로 간주하기 전 필요한 연속적인 상태 확인 실패 횟수

 

AWS Console에서 대상 그룹 생성 확인

 

   ALB Listener 추가   

 - FrontEnd 부분인 Listener 부분 설정

 - registry.terraform.io에서 aws_lb_listener 확인

 

alb에 리스너를 연결하고 내부 타겟 그룹쪽으로 포워딩하는 설정

 

AWS Console에서 리스너 추가된 것 확인

 

 

   Auto Scaling   

 

   시작 구성을 위한 IAM Instance Profile 생성   

 - 생성되는 EC2 인스턴스마다 IAM 역할을 전달 하기 위함

 

EC2에 적용할 것이므로 EC2 선택후 다음

 

역할 이름 지정

 

테스트용이므로 따로 역할은 추가해주지 않고 생성

 

생성된 Instance Profile 확인

 

   Launch Configuration(시작 구성)   

 - registry.terraform.io에서 aws_launch_configuration 확인

 

생성한 AMI, Security Group, IAM Profile, Key-Pair 를 넣어 주며 생성

    - user_data를 이용하여 Auto Scaling으로 생성되는 EC2 인스턴스마다

      해당 내용이 적용되도록 설정

 

AWS Console에서 시작 구성 생성 확인

 

   Auto Scaling Group 구성   

 - registry.terraform.io에서 aws_placement_group 확인

 

Auto Scaling 그룹 구성

    - 배치 전략은 Cluster 단위

    - 최소 용량 및 최대 용량 설정

    - desired_capacity : 처음 생기는 EC2 인스턴스의 수

    - 시작 구성 및 VPC의 Subnet 추가

 

AWS Console에서 Auto Scaling 그룹 생성 확인

 

최대, 최소 및 원하는 용량 생성 확인

 

desried_capacity가 2로 설정되어 EC2 인스턴스 2개가 생성된 것을 확인

 

desired capacity를 1로 변경하고 다시 plan, apply

 

EC2 인스턴스 1개가 삭제되는 것을 확인

 

   ALB에 Attach   

 

생성되어있는 ALB의 ARN에 AutoScaling Group의 ID를 붙인다

 

alb의 Target group에서 등록대상 확인

 

 

   RDS   

 

   DB의 Endpoint 확인 및 사전 체크   

 

AWS Console에서 RDS를 생성하여 EndPoint 확인 후 삭제

 

파라미터 그룹에서 default.mysql8.0이 존재하는지 확인

    - 평소에 쓰던 mysql5.7로 terraform 코드를 구성하면 오류가 발생하여 8.0으로 대체

 

health check 패스 경로 변경

 

   RDS 생성   

 

RDS 생성 옵션 값에 맞게 설정

 

AWS Console에서 서브넷 그룹 생성 확인

 

 

   Wordpress 연동 테스트   

 

userdata 수정(Wordpress 연동)

    - 수정 후, plan & apply 진행!

 

Auto Scaling에 의해 생성된 EC2 instance에 접속하여 Wordpress 연동 확인

 

ALB의 Endpoint로 접속하여 Wordpress 연동 확인