분류 전체보기 721

테라폼 시리즈 23편. 레이아웃

레이아웃이란? 애플리케이션을 개발/운영을 나누듯이 인프라 환경도 개발/운영 등 분리해서 관리합니다. 인프라 환경을 분리함에 따라 테라폼 코드도 적절하게 구조를 만들어서 관리해야 합니다. 이 때, 코드 구조를 “레이아웃”이라고 부릅니다. 레이아웃 예시 레이아웃은 정답이 없습니다. 주어진 상황에 맞게 적절히 레이아웃을 만들면 되는데요. 이 글에서는 스터디에서 다룬 레이아웃을 소개합니다. 레이아웃은 크게 2종류로 분리할 수 있을 것 같습니다. 1. 최상위(root): 환경(개발, 스테이지)과 global리소스3(SS, IAM 등)로 분류했습니다. 2. 하위구성요소: 최상위 아래에는 모듈과 tf파일 집합으로 구성되어 있습니다. 예제 코드 github 링크: https://github.com/sungwook-pr..

연재 시리즈 2022.11.05

테라폼 시리즈 22편. Terraform Remote State Data Source

개요 terraform remote state는 원격 상태파일에 있는 값을 참조하는 방법입니다. 다른 팀이 작업한 리소스를 참조하거나 레이아웃을 여러 개 만든 상황에서 레이아웃끼리 리소스 참조 등에 사용할 수 있습니다. data block와 terraform_remote_state을 조합해서 원격상태파일을 가져올 수 있습니다. data "terraform_remote_state" "remote" { backend = "s3" config = { bucket = "..." key = "terraform.tfstate" region = "ap-northeast-2" } } 원격상태파일 값을 참조하려면 제공해주는 곳에서 output block을 선언해야 합니다. 예제 github 링크: https://gith..

연재 시리즈 2022.11.04

테라폼 시리즈 21편. 상태파일 민감정보

상태파일에 평문으로 저장되는 민감정보 테라폼 상태파일은 디폴트 저장이 평문저장입니다. 환경변수로 변수값을 넘겨도 상태파일의 값은 평문으로 저장됩니다. 만약 여러분이 public git에 state파일을 저장한다면 소중한 민감정보가 노출되게됩니다. 해결방법은 시크릿 저장소를 이용하여 민감정보를 암호화해야 합니다. 대표적으로 valut, 클라우드 솔루션(aws secret manager, GCP kms 등)이 있습니다. 예제 정말로 민감정보가 상태파일에 평문으로 저장되는지 실습해보겠습니다. 민감정보를 상태파일로 저장할 수 있는 aws RDS를 예제로 살펴볼겁니다. RDS는 로그인할 계정과 비밀번호가 필요합니다. RDS 계정과 비밀번호는 입력으로 받을 수 있도록 variable block을 사용했습니다. gi..

연재 시리즈 2022.11.03

테라폼 시리즈 20편. 협업을 위한 테라폼 관리

1. 테라폼 협업 관리란? 이제 협업을 위한 테라폼 공부를 할 때가 왔습니다. 여러 명이 테라폼을 사용하려면 2가지 문제를 해결해야 합니다. 상태파일(tfstate)를 어떻게 동기화할지 여러 명이 동시에 테라폼 코드를 실행하면, 어떻게 충돌을 막을지 테라폼 클라우드를 사용하면 별다른 고민 없이 테라폼 협업문제를 해결할 수 있습니다. 하지만 테라폼 클라우드는 부분 무료이기 때문에 상황에 따라 결재가 필요합니다. 2. backend를 이용한 상태파일 동기화 2.1 상태파일 동기화가 중요한 이유 상태파일은 테라폼코드가 인프라에 반영된 상태를 저장하고 있습니다. 그리고 인프라에 영향을 주는 terrform명령어를 실행하면, 테라폼 코드와 상태파일을 비교하여 인프라에 반영합니다. 그러므로 상태파일이 동기화되어 있..

연재 시리즈 2022.10.29

테라폼 시리즈 19편. ALB와 Auto Scaling Group 연동

목표 테라폼으로 auto scaling group, Application Load Balancer을 생성합니다. 요구사항 Auto Scaling Group은 4번째 과제를 사용하되 user data에 httpd(80/tcp)를 실행합니다. http://ALB:80으로 요청하면 Auto Scaling Group이 관리하는 EC2 Instance로 부하분산 해야 합니다. vpc는 전글(https://malwareanalysis.tistory.com/438)에 생성한 리소스를 사용합니다. route table은 전글(https://malwareanalysis.tistory.com/441)에서 생성한 리소스를 사용합니다. security group은 전글(https://malwareanalysis.tistory..

연재 시리즈 2022.10.29

테라폼 시리즈 18편. auto scaling group생성

목표 테라폼으로 auto scaling group을 생성합니다. 요구사항 auto scaling 템플릿은 aws_launch_configuration을 사용합니다. vpc는 전글(https://malwareanalysis.tistory.com/438)에 생성한 리소스를 사용합니다. route table은 전글(https://malwareanalysis.tistory.com/441)에서 생성한 리소스를 사용합니다. security group은 전글(https://malwareanalysis.tistory.com/443)에 생성한 리소스를 사용합니다. 상세내용 auto scaling group생성 코드는 template 또는 configuration설정 코드가 많은 비중을 차지합니다. 테라폼에서도 auto ..

연재 시리즈 2022.10.28