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 -