일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- AWS Security Hub
- SSL 인증서
- Backend
- DaemonSet
- Amazon DynamoDB
- Kubernetis
- DevOps
- Amazon VPC
- classmethod
- staticmethod
- Heartbleed
- deployment
- ConfigMap
- CI CD
- Amazon Route 53
- Industry Week 2023
- taint
- Terraform
- AWS EC2
- docker
- ReplicaSet
- Python
- ansible
- k8s
- mariaDB
- Amazon GuardDuty
- AWS
- Amazon RDS
- Terraform state
- Cognito
Archives
- Today
- Total
Nubes et Stella
Terraform #08 (taint/Workspace) 본문
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 |