초보 개발자

Terraform이란 본문

카테고리 없음

Terraform이란

taehyeki 2023. 6. 27. 20:52

Terraform이란


서버 네트워크 등의 구축을 코드화(IaC) 시켜주는 OSS이다.

Terraform은 hashiCorp사에서 제공하는 오프소스이다. 

Terraform은 AWS이외에도 GCP, Azure등에서도 사용할 수 있는 장점이 있다. (ベンダー非依存)

CloudFormation은 AWS에서만 사용이 가능.

 

Terraform은 .tf라는 확장자를 가진 파일을 가지고, JSON형식과 비슷한 HCL형식으로 작성해야한다. 

이 HCL은 hashiCorp사에서 개발한 것이라고 알고있다.

 

이 후 커맨드를 사용하면 인프라 구축이 자동으로 된다.

 

 

 

 

Terraform을 사용하는 이유는?


AWS CLI로 리소스를 생성 및 제어하는 것보다 적은 양의 코드로 보존 및 재활용이 용이한 인프라 구축이 가능하다.

인프라 코드는 깃등으로 버전관리도 가능하며 변경시, 바뀐 점을 확인하는 것도 쉽다.

 

IaC의 종류는 세가지가 있다. Terraform, AWS CloudFormation, AWS CDK

 

 

 

Cloud9, asdf


AWS환경을 테라폼에서 구축하는 경우 테라폼 커맨드를 실행하는 머신에 AWS에 액세스할 수 있는 권한이 필요하다.

PC에서 AWS에 액세스 하기 위해선 액세스키가 필요한데, 이 키가 누출되어버리면 곤란해지기 때문에

AWS의 Cloud9이라는 개발환경에서  (IDE서비스)를 사용해보려고 한다.

 

Cloud9

Web상에서 코드를 실행할수있는 통합개발환경이다. AWS에서 Cloud9서비스를 생성한 후 접속하면 다음과 같은

IDE가 보인다.

 

 

 

asdf

asdf는 버전관리 툴이다.

각 프로젝트 마다 Terraform버전을 다르게 해야할 상황이 있을 것이다. 이 때 asdf를 사용하면 수월하게 할 수 있다.

Terraform만 가능한 것은아니고 각종언어도 가능하다 (node.js python .. ) 

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0

cloud9의 터미널에서 위의 명령어를 입력해주어 asdf를 설치해주자

 

이후 asdf를 실행하면 아래와 같이 인식이 안되기 때문에 환경변수를 지정해주어야한다.

더보기

vi ~/.bashrc 

 

아래의 두 커맨드라인을 맨 마지막에 적어주도록하자.

 

. "$HOME/.asdf/asdf.sh"

. "$HOME/.asdf/completions/asdf.bash"

이후 asdf 명령어를 치면 잘 작동이 된다.

 

 

 

asdf로 Terraform을 install해보자


asdf만 설치하였기 때문에 현재로써는 다양한 Terraform 버전을 이용할 수 없다.

이를 위해 Plugin을 설치를 해줘야한다.

asdf plugin add terraform

이 후 아래의 명령어를 입력하면 사용할 수 있는 모든 버전의 terraform이 나타난다.

asdf list all terraform

 

terraform을 사용할 폴더를 하나 만들고(test) .tool-versions라는 파일안에 terraform 1.3.8을 적은 뒤 

asdf install을 하면 해당 폴더안에서 지정한 테라폼 버전이 적용이 된다.

test2라는 폴더안에 terraform 1.3.4를 적은 뒤 asdf install을 하면 해당 폴더안에선 1.3.4 버전이 적용이 된다.

 

 

 

끝으로


이렇게 Terraform에 관한 설명과 terraform을 설치하는 과정까지 알아보았다.

이제 간단한 아키텍트를 aws상에 구축해보자.