테라폼으로 시작하는 IaC

Huiji Kim·2023년 6월 7일
0

요즘 일을 하면서 어떻게 하면 더 쉽고 간결하지만 좋은 인프라 자동화를 구현할 수 있을까에 대한 고민을 많이 하게 된다. 교육을 다니면서 여러가지 기술을 접해보고, 여러 사람을 만나서 생각을 나눠보고 조언을 구하기도 한다

Terraform으로 서버 인프라를 구축하려고 하는 데 모듈을 어떻게 구성해야 할지 몰라 조언을 구하다가 알게 된 책이다.

이 게시글은 이 책을 통해 배운 내용 중 중요하다고 생각되는 것과 나중에 또 보고싶은 내용을 계속해서 업데이트 할 것이다.

테라폼과 다른 도구의 비교

cloudformation에서 terraform으로 갈아탄 가장 큰 이유는 aws에 종속적이고 코드의 수정이 불가능하다는 이유였는데, 이 표에는 각 도구의 특징이 잘 정리되어 있다.

테라폼 사용 목적과 과제

워크플로

인프라와 서비스 구성 및 변경 작업인 프로비저닝을 위해 체계화된 워크플로를 제공

자산화

테라폼을 통해 프로비전이 작업에 일관성을 보장하고 축적된 프로비저닝 노하우를 자산화
코드형태로 되어 있으므로 코드 기반의 공유 도구(git, ci, cd)들과 통합되며 손쇠운 공유와 재사용이 가능

표준화

작성된 테라폼 코드는 조직 내부의 표준화를 거쳐 모듈화된 상태로 쉽게 재사용이 가능

프로비저닝 자동화

테라폼은 기존 인프라의 변경과 업데이트를 코드 워크플로 도구와 통합 가능
작업 수행 전에 실행 계획을 작성하여 변경 사항을 미리 확인하므로 안전하고 빠른 프로비저닝 수행

공유 제외 대상

.gitignore

# Local .terraform directories
**/.terraform/*

# .tfstaet files
*.tfstate
*.tfstate.*

# .tfvars files
*.tfvars

# no creds
*.pem
*.ppk

# terraformrc file
terraform.rc
.terraformrc

tfstate

프로비저닝 결과 데이터 소스 정보이며, 민감 데이터가 포함되거나 다른 사용자가 같은 State 파일을 사용하는 경우 인프라 불합치를 유발

궁금점

모듈 구성을 어떻게 할지?

common

  • elastic_ip.tf
  • nat.tf
  • route_table.tf
  • bastion_ec2.tf
  • waf.tf
  • iam.tf

common/main.tf

  • vpc.tf
  • subnet.tf
  • security_group.tf
  • ami.tf
  • s3.tf

common/variables.tf

  • vpc_cidr
  • env, pjt

ec2의 구성이 모두 똑같고 eip도 지정되어있는데 왜 새로 apply 할 때마다 ec2 인스턴스가 destroy 됐다가 create되는건지?

profile
새로 학습하는 내용을 기록합니다. \n 예전 주소 : https://blog.naver.com/gmlwl0720

0개의 댓글