Skip to content

Terraform

Jae-Baek Song edited this page Jul 26, 2024 · 2 revisions

Terraform

테라폼은 iaC(Infrastructure as Code) 도구중 하나로 코드를 통해 인프라 서버를 관리 할 수 있게 해주는 도구입니다.

장점

  • 코드로 인프라를 관리하기 때문에 자동화가 가능하다.
  • 인프라를 코드로 관리하기 때문에 따로 문서화가 필요 없고 전체 구성을 파악하기 쉽다.
  • Git을 통한 형상 관리 및 변경 이력 관리가 가능하다.
  • 코드 리뷰를 통해서 수동으로 인프라를 변경하는 것 보다 안전하고, 변경사항을 미리 확인해 피드백을 받을 수 있다.

단점

  • 러닝 커브
  • 테라폼(Terraform) 버전 차이에 따라 변경된 명령어가 많아 하위 호환성이 보장되지 않는 경우가 많다. 공식 문서 외의 자료를 찾을 때도 이 점에 유의해야 한다.

러닝 커브

초보 terraform을 사용할줄만 아는 수준 일주일
중수 terraform code를 리팩토링하고 구조화할 줄 아는 수준 1~3달
고수 terraform의 함수, 모듈과 같은 고급 기능을 자유롭게 쓸 수 있는 수준 3달 이상

https://openupthecloud.com/how-long-to-learn-terraform/

백엔드 팀에서 terraform을 처음에 도입할 때 일주일 정도 소요되었기 때문에 저도 동의하는 편입니다. 다만, 중수와 고수 부분은 경험해보지 못해서 말씀드리기가 어려운데요. 저와 팀의 terraform 숙련도가 초보와 중수 그 사이 어딘가에 있는 가장 큰 이유는 이 정도만 알아도 서비스를 관리하기에 충분했기 때문이라고 생각합니다. https://goodahn.tistory.com/84

하위 호환성 및 문서 부족

https://discuss.hashicorp.com/c/terraform-core/27

https://github.com/hashicorp/terraform/issues

테라폼 포럼이나 깃허브 이슈를 통해서 대부분의 문제를 해결할 수 있다.


사전 준비

AWS CLI 및 Terraform 설치

https://terraform101.inflearn.devopsart.dev/preparation/install-terraform-aws/

AWS Configure 세팅

https://terraform101.inflearn.devopsart.dev/preparation/aws-configure/


자주 사용하는 명령어

terraform init    # 환경을 초기화시킵니다
terraform plan    # 상태를 적용시킨다면 어떤 결과가 발생할지 미리 확인합니다.
terraform apply   # 상태를 적용시킵니다.
terraform destroy # 모든 상태를 파괴(삭제)합니다.

명명 규칙

https://www.terraform-best-practices.com/naming