Nubes et Stella

Terraform #08 (taint/Workspace) 본문

DevOps/Terraform

Terraform #08 (taint/Workspace)

SeongYeong Han 2023. 10. 24. 22:45

01. Terraform taint

  • Terraform taint는 특정 리소스에 문제가 발생하여 해당 리소스를 강제로 교체해야 할 경우에 사용되는 옵션이다.

 

  • Terraform state list 목록에서 교체하고자 하는 리소스를 확인한다.

 

  • terraform taint "리소스 명" 명령어를 사용하여, aws_internet_gateway 리소스를 taint 한다. (한 번에 여러개 가능)

 

  • terraform apply를 진행하게 되면 taint 상태의 리소스가 변경되려는 것을 볼 수 있다.
  • 동시에 route_table 리소스에 설정된 internet_gateway 값이 같이 변경된다. (의존성)

 

  • terraform apply후 실제로 internet_gateway가 변경된 것을 볼 수 있다.

 

  • taint 상태를 해제하고 싶다면 terrarform untaint를 사용하면 된다.

 

  • 특정 리소스 하나만 교체하고자 한다면 terraform apply -replace " " 로 교체할 수 도 있다.

- 중간 생략 -

 

 

02. Terraform Workspace

Terraform 워크스페이스는 테라폼 코드를 사용하여 하나의 거대한 인프라를 관리할 경우 하나의 코드를 재활용하여 여러 환경(운영, 개발, DR)별로 구성/관리하기 작업공간이다.

 

workspace 명령어 옵션은 크게 아래와 같이 존재한다.

 

  • delete : 생성되어 있는 워크스페이스를 삭제한다. (현재 위치한 워크스페이스는 삭제 불가)
  • list : 생성되어 있는 워크스페이스 리스트를 출력한다.
  • new : 새로운 워크스페이스를 생성한다.
  • select : 다른 워크스페이스로 이동한다.
  • show : 현재 위치해 있는 워크스페이스를 보여준다.

 

  • "new" 옵션으로 새로운 워크스페이스(prod)를 생성해보자.

 

  • "list" 옵션으로 현재 생성되어 있는 워크스페이스를 출력해보자 (워크스페이스 이름 앞의 * 표시는 현재 위치를 나타낸다.)

 

  • "select" 옵션으로 다른 워크스페이스(prod)로 이동해보자
  • "show" 옵션으로 현재 위치한 워크스페이스를 표시한다.

 

  • prod 환경에 맞는 tfvars 파일을 사용하여 prod 워크스페이스에서 코드를 실행하여 vpc를 생성한다.
  • 정상적으로 apply가 되었다면, ./terraform.tfstate.d/[워크스페이스] 경로에 tfstate 파일이 생성된다. 워크스페이스 별로 상태관리를 다르게 하기 때문이다.

 

  • 다른 워크스페이스에서도 각각의 tfvars 파일을 사용하여 동일하게 코드를 실행한 결과를 확인!!

 

  • terraform destroy 를 진행하게 되면 현재 워크스페이스의 리소스만 삭제된다. (state가 분리되어 있기 때문)

 

  • "delete" 옵션을 사용하여 워크스페이스를 삭제해 보자 (현재 위치한 워크스페이스는 삭제 불가능 하다.)

 

- END -

'DevOps > Terraform' 카테고리의 다른 글

Terraform #09 (Module)  (0) 2023.10.30
Terraform #07 (Backend/State)  (0) 2023.10.23
Terraform #06 (Conditional/For)  (0) 2023.10.19
Terraform #05 (count/for_each)  (1) 2023.10.18
Terraform #04 (Variable/Output/Local)  (1) 2023.10.09