본문 바로가기
Dev/Infra & Module

Terraform Plugin 설치 환경구성

by zemba 2022. 9. 15.
반응형
SMALL

Terraform이 Iac다보니 Intellij에서도 plugin으로 Terraform을 지원해준다.
플러그인이 문법이나 자동완성등 HCL, HIL 언어를 지원해준다고한다.
(HCL, HIL : HashiCorp Configuration/Iterpolation Language)


Plugin 설치

Intellij Plugin에서 Terraform을 검색하면 Terraform and HCL의 플러그인을 설치하면된다.

Git Repository

인프라는 혼자서 사용하지 않기 때문에 관리를 위해 Git을 통하여 관리하도록 환경을 구성한다.
GitLab, GitHub등 별도의 Repository를 통하여 형상관리를 하는것을 추천한다.

Code 작성

Terrafrom은 *.tf파일을 통해 인프라를 설정한다. 플러그인 설치로 인하여 *.tf 파일을 생성하면 자동적으로 Terraform 파일로 인식하여 자동완성과 문법에 대한 부분을 지원해준다.

Before Commit에 플러그인 설치로 인하여 Terraform fmt 기능이 추가 되어서 체크해보았더니 type 부분에 정의한 list란 문자열이 list(string) 으로 자동 변환이 되었다. 해당기능은 다음과 같이 동작한다.

 

Repository 구조 

Terraform은 기본적으로 workspace가 폴더 단위로 동작한다. 그렇기 때문에 폴더내부에 *.tf의 파일이 많이 있으면 전부다 인프라에 적용하도록 동작한다. 작업할 workspace의 단위에 따라서 폴더의 구조를 잘 나누는것이 바람직할것으로 보인다.

.
├── README.md
├── dev
│   ├── cloudFront
│   ├── eks
│   ├── rds
│   ├── redis
│   ├── s3
│   │   └── s3.tf
│   └── vpc
└── prod
    ├── cloudFront
    ├── eks
    ├── rds
    ├── redis
    ├── s3
    │   └── s3.tf
    └── vpc

일반적으로 Service의 인프라는 Develop, Staging, Prod환경이 별도로 구분이 되어있을것이다. 그렇기 때문에 각각의 환경에 따른 workspace를 구분하는것이 좋을것 같다. 그리고 환경에 필요한 s3, cloudfront, sns, sqs등등 각종 aws의 기능들을 사용하기 위해서  각각 workspace를 나눠 설정 Code를 기록하도록 한다. 참고사항으로는 같은 workspace 내부에 variable가 중복되면 문법적으로 오류를 알려준다. 그러니까 반드시 플러그인을 설치하여 작성하는것을 추천한다.

또한 Terraform Tutorial에서 항상 Main.tf를 통해서 인프라를 적용하는 예제들이 있지만 Main.tf는 필수는 아니였다!
인프라의 리소스를 파일명으로 지정하는게 더욱 알기쉬울것이라고 생각된다.

 

Are the terraform.tf and main.tf naming conventions or mandatory?

Most terraform projects I have come across have a file called terraform.tf and Main.tf Are these files mandatory or just naming conventions?

stackoverflow.com

tfstate 관리

terraform apply를 실행하면 Infra에 대한 tfstate 파일이 생성된다. 이는 현재 구성된 infra와 변경된 사항에 대한 정보를 비교하기 위한 파일로써 중복으로 관리되거나 덮어씌울경우에 문제가 발생할수 있기 때문에 이 파일은 신중하게 관리를 해야한다. Terraform cloud 서비스를 사용할 경우에는 이를 관리해주는 서비스가 제공되지만 우선 Terraform Cloud는 유료서비스기 때문에 Cli로 구성하려면 별도의 설정으로 tfstate의 파일을 관리해야한다.

관리에 대한 방법은 다음 링크를 참조한다.

 

Backend 활용하기 :: Terraform & AWS 101

Backend 활용하기 Terraform Backend 란? Terraform “Backend” 는 Terraform의 state file을 어디에 저장을 하고, 가져올지에 대한 설정입니다. 기본적으로는는 로컬 스토리지에 저장을 하지만, 설정에 따라서 s3,

terraform101.inflearn.devopsart.dev

Terraform의 Backend기능을 사용해 S3와 DynamoDB를 이용하여 최신상태의 관리와 Lock 환경을 구성할수 있다.
단 backend 기능을 활용할경우 tf파일 코드 작성시에 variable을 사용해서 지정할수 없다. 무조건 String을 직접입력해야 적용된다.

반응형
LIST

'Dev > Infra & Module' 카테고리의 다른 글

CI/CD란?  (0) 2022.12.27
Terraform AWS EKS  (0) 2022.09.15
Terraform 이란  (0) 2022.09.15
Jmeter 사용법 (Mac)  (0) 2022.08.25
Redis Client 접속 및 간단 명령어  (0) 2022.08.22

댓글