Terraform
- 조건식 + 데이터 소스
- 무중단 배포
1교시
모듈 폴더에서 2가지의 user_data.sh 스크립트를 제공하고, 사용자가 어떤 스크립트를 실행할지 선택할 수 있게 해 보자.
-> 모듈 폴더에 2가지 스크립트 생성, template_file 데이터 소스를 통해 스크립트 정의
-> 모듈 사용자가 스크립트를 선택할 수 있도록 입력 변수 정의
-> template_file 데이터 소스에 count 매개 변수를 이용, 특정 스크립트가 선택되게 설정
-> 시작 구성 리소스에 template_file 데이터 소스 정의
template 매개 변수로 스크립트 파일이 어디 있는지 알려준다.
루트 모듈에서 source 매개 변수로 모듈의 위치를 지정하는데, 이 경로가 path.module이 된다.
대충 실습 상황은
-> prod에서는 기존에 사용하던 스크립트 사용, stage에서는 새로운 스크립트 사용
그리고 입력 매개 변수의 값에 따라 user_data의 값을 바꾸면 되겠다.
이 매개 변수를 사용하는 코드를 data 블록 내부에 작성
enable_new_user_data가 true라면 기존 스크립트를 사용하지 않고,
enable_new_user_data가 false라면 기존 스크립트를 사용
새로운 데이터 블록에는 반대로 작성하면 된다.
만약 기존 스크립트를 사용하지 않는다면 data.template_file.user_data는 빈 리스트가 된다 = 길이가 0
-> 기존 스크립트를 사용하지 않는다 = 새로운 스크립트를 사용한다
-> 조건식(length > 0)이 거짓이라면 새로운 스크립트 사용
2~3교시
22일 1차 제출 때 70% 이상 완성 목표
31일 2차 제출 때 PPT 80% 이상 완성 필요
이번에는 for_each와 for 표현식을 사용한 조건문
for_each = <COLLECTION>
컬렉션이 비어 있는지 여부를 조건부로 어떻게 판단할 수 있는가?
컬렉션에 {for 구문}으로 인라인 블록을 유동적으로 조절 가능
리소스 자체를 반복 생성하거나 조건 생성할 때 -> 일반적으로 count 매개 변수
이 외의 경우(인라인 블록 등)에서 반복/조건 생성할 때 -> for_each 구문 + for 표현식 사용
if 문자열 지시자가 있는 조건문
-> %{ if <조건> }<참일 경우의 값>%{ endif }
-> %{ if <조건> }<참일 경우의 값>%{ else }<거짓일 경우의 값>%{ endif }
4교시
무중단 배포 - 업데이트 시 서비스 중단 없이 진행되도록
블루-그린 배포 방식
-> 블루(기존 서비스), 그린(새로운 서비스)
그린 인프라를 미리 만들고, 로드 밸런서를 통해 자연스럽게 블루에서 그린으로 이동하도록 조치
사실 이미 사용하고 있다. lifecycle 인라인 블록이 해당 기능을 해주고 있다.
5~6교시
시작 구성 정보가 달라지면 교체의 개념이다(그렇다고 ID가 바뀌는 것은 아니다)
ASG는 시작 구성에 EC2 구성 정보를 담아놓는다. 이 시작 구성은 ASG가 참조한다.
무중단 배포 방식은 교체용 ASG를 먼저 만든 다음 기존의 ASG를 파기하는 방식.
-> create_before_destroy 수명 주기 설정 작업
while ($true) {curl webservers-stage-alb-1724597622.ap-northeast-2.elb.amazonaws.com ; start-sleep -seconds 1}
7~8교시
1. ELB가 기존 시작 구성을 가진 ASG를 가리킨다
2. 새로운 시작 구성이 배포된다
3. 새로운 ASG가 생성되고 ELB에 연결된다. 상태 확인 시작
4. 새로운 ASG(버전 2)가 완전히 등록된 후 이전 ASG를 멈춘다(서버 종료)
5. 이전 ASG는 사라지고 버전 2 ASG만 남는다
5~6교시 빠르게 훑기
'교육' 카테고리의 다른 글
[99일 차] 21.12.13 : Kubernetes 1 (0) | 2021.12.13 |
---|---|
[98일 차] 21.12.10 : Docker (0) | 2021.12.10 |
[96일 차] 21.12.09 : Terraform 5 (0) | 2021.12.08 |
[95일 차] 21.12.07 : Terraform 4 (0) | 2021.12.07 |
[94일 차] 21.12.06 : Terraform 3 (0) | 2021.12.06 |
댓글