[Terraform]테라폼(terraform) workspace란? (Feat.프로바이더 사용용해보기)

2022년 02월 23일 by Xion

    [Terraform]테라폼(terraform) workspace란? (Feat.프로바이더 사용용해보기) 목차

테라폼 워크스페이스(Work space)란?

 

이번 포스팅은 워크스페이스에 대해 알아보겠습니다.

 

워크스페이스는 하나의 프로젝트 단위라고 생각하시면 됩니다.

 

테라폼은 코드를 관리할 때 변경 상태에 대한 추적이 가능합니다.

이것을 추적하기 위한 목적으로 state를 관리하게 되는데

 

. terraform.tfstate라는 파일이 이 있습니다.

이 파일은 workspace 단위로 생성이 됩니다.

 

workspace가 상태를 관리하는 단위라고 생각하시면 좋겠습니다.

 

먼저 workspace로 사용할 디렉터리를 만들어봅시다.

 

mkdir 명령어를 통하여 폴더를 만들어 줍시다.

 

 

단일 파일로 관리할 때 main.tf라는 이름으로 관리를 합니다.

 

각자의 선호도에 맞게 intellij IDE OR Vscode OR 터미널(vim) 창에서 진행하시면 됩니다.

저는 vscode ide에서 진행하도록 하겠습니다.

 

테라폼 registry site를 통하여 프로바이더를 선택해 줍니다!

 

https://registry.terraform.io/

 

Terraform Registry

 

registry.terraform.io

 

 

 

Browser provider를 선택하신 뒤 local provider를 사용해 줍시다.

 

 

 

모든 프로바이더들은 밑에 설정과 같이 테라폼 블록 설정과 provider block안의 설정을 통해 사용하게 됩니다.

 

terraform block안에서는 required providers block안에 version을 명시하게 됩니다.

 

이 버전은 명시하지 않으면 default로 최신 버전이 들어갑니다.

 

에디터에 해당 설정을 복사해줍시다.

 

프로바이더마다 고유의 설정을 할 수 있는데 설정을 하지 않을 때는 생략이 가능합니다.

 

옆에 Resources tab은 로컬 프로바이더를 사용해서 관리할 수 있는 인프라 리소스라고 생가하시면 됩니다.(data write용)

Datasources는 인프라 리소스를 관리할 때 참조할 수 있는 datasources입니다. (data read용)

 

 

로컬 프로바이더를 사용하도록 설정

 

해당 프로바이더를 사용해봅시다. example usage 복붙

 

 

 

 

위 사진처럼 코드를 작성 후 테라폼을 실행시켜보자

해당 디렉터리에 들어간 후

 

terraform init

terraform init을 진행하면 provider를 사용하게 된다.

 

Installing hashicorp/local v2.1.0... 이 부분이 해당 프로바이더 (저희는 local 프로바이더)의 버전을 알 수 있다.

 

해당 디렉터리 안에는. terraform 디렉터리와 lock 파일을 볼 수 있다.

프로바이더나 모듈들의 캐시들을 다운로드하여서 보관하게 됩니다.

 

또한 lock file을 보면

해당 내용이 있는데 지금 당장은 필요 없지만, 팀에서 협업 OR 파이프라인을 구성하기 위한 요소입니다.

해당 프로바이더의 version을 lock 시키고 작업자들에게 동일한 버전을 제공(apply) 하기 위함입니다.

 

또한 한 가지 tip으로 terraform 명령어가 너무 길다면, 다음과 같이 축약이 가능하다.

 

테라폼 변경사항 확인 

​terraform plan

저희가 작성한 main.tf file이 어떤 변경 사항이 있는지 확인할 수 있습니다.

(Plan: 1 to add, 0 to change, 0 to destroy) 를 통해 확인.

현재는 1개의 추가사항으로 local_file resource의 local_file.foo 라는 이름으로 1개가 추가되었다는 것을 알 수 있습니다.

 

테라폼 변경사항 적용

 

terraform apply

value에 yes를 입력하면, 생성이 되고, 다시 

ls -al

해당 명령어를 입력하면 foo.txt 파일이 생성된 것을 확인할 수 있습니다.

추가로 terraform.tfstate 파일도 생성되었죠!

 

해당 파일은 local에서 관리되는 상태 파일입니다.

현재 resources의 상태를 기록하고 있는 것을 확인하실 수 있습니다.

해당 파일을 통하여 나중에 main.tf를 변경하고 적용할 때 차이정을 명확하게 볼 수 있습니다.

 

 

| 이제는 Data Sources가 무엇을 하는지 알아보겠습니다.

 

 

 

로컬파일 시스템으로부터 로컬 파일을 읽는 역할을 합니다.

 

data sources는 data라는 지시어를 사용하여 정의를 합니다.

 

그 후 테라폼 적용(terraform apply)

에러가 나는 이유는 현재 디렉터리에 hi.txt file이 없기 때문이다.

 

에러 수정을 위해 txt file을 만들어주자.

 

"cat >"  명령어를 통해 file 생성 및 내용 입력

정상적으로 apply가 된다.

 

data sources 같은 경우 그냥 read(읽기) 역할만 하기 때문에 인프라상에 아무련 변화가 없다.

 

하지만 읽어들인 data를 확인하고 싶을 경우에는 

ouput 지시어를 사용하자.

 

테라폼 apply 실행

 

인프라상에서 변경사항은 없지만 output이 변경되는 것을 확인할 수 있다.

 

output으로 명시한 이름인 file_hi_test라는 이름으로 object가 생성된 것을 확인할 수 있습니다.