[기본 명령어] Terraform 명령어
2024. 11. 26. 19:18ㆍTerraform/[인프런] 아키텍처와 함께하는 Terraform
1. terraform init
- Terraform 작업 디렉토리를 초기화하고 필요한 플러그인과 모듈을 다운로드한다.
- 프로젝트를 처음 설정하거나 Backend 설정을 변경할 때 사용한다.
* 사용 예시
terraform init
* 출력 결과
Initializing the backend...
# AWS Provider와 같은 필요한 플러그인을 다운로드한다.
Initializing provider plugins...
Terraform has been successfully initialized!
2. terraform validate
- Terraform 구성 파일의 문법과 형식이 올바른지 검증한다.
* 사용 예시
terraform validate
* 출력 결과 (성공)
Success! The configuration is valid.
* 출력 결과 (실패)
Error: Missing required argument
The argument "region" is required, but no definition was found.
3. terraform fmt
- Terraform 구성 파일의 포맷을 자동으로 정리한다.
- -recursive 옵션을 사용하면 서브 디렉토리까지 포함하여 모든 파일 포맷팅한다.
* 사용 예시
# 잘못된 들여쓰기나 공백을 정리하여 가독성을 개선한다.
terraform fmt
4. terraform plan
- Terraform 구성 파일과 현재 상태(state)를 비교하여 실행 계획을 미리 보여준다.
- -out=<파일명> 옵션을 사용하면 계획을 파일로 저장한다.
- add : 생성될 리소스 수
change : 수정될 리소스 수
destroy : 삭제될 리소스 수
* 사용 예시
# 현재 인프라 상태와 구성 파일의 차이를 확인한다.
terraform plan
* 출력 결과
Plan: 1 to add, 0 to change, 0 to destroy.
5. terraform apply
- 실행 계획대로 인프라를 실제로 적용한다.
- tfplan 옵션을 사용하면 저장된 계획을 실행한다.
* 사용 예시
# 계획을 적용하여 리소스를 생성, 수정, 삭제한다.
terraform apply
# 저장된 계획을 실행한다.
terraform apply tfplan
* 출력 결과
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
6. terraform destory
- 구성 파일에 정의된 모든 리소스를 삭제한다.
* 사용 예시
# 프로젝트에 정의된 모든 리소스를 삭제한다.
terraform destory
* 출력 결과
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources? Type 'yes' to continue.
7. terraform show
- 현재 상태(state) 파일이나 실행 계획의 내용을 표시한다.
* 사용 예시
# 현재 인프라 상태를 출력한다.
terraform show
* 출력 결과
aws_instance.example:
id = i-0abc123456def7890
ami = ami-12345678
instance_type = t2.micro
8. terraform state
- Terraform state 파일을 직접 관리하거나 검사한다.
* 리소스 목록 확인
terraform state list
* 특정 리소스 세부 정보 확인
terraform state show aws_instance.example
9. terraform output
- Terraform 실행 후 출력 값을 표시한다.
* 사용 예시
# 모든 출력 값을 표시한다.
terraform output
# 특정 출력 값(instance_id)을 표시한다.
terraform output instance_id
10. terraform workspace
- Terraform 워크스페이스를 관리한다.
* 사용 예시
# 워크스페이스 목록 확인
terraform workspace list
# 워크스페이스 생성
terraform worksapce new dev
# 워크스페이스 전환
terraform workspace select dev
11. terraform import
- 기존 인프라를 Terraform state 파일에 가져온다.
* 사용 예시
# 기존 EC2 인스턴스(i-0abc123456def7890)를 Terraform에서 관리하도록 가져온다.
terraform import aws_instance.example i-0abc123456def7890
12. terraform graph
- Terraform 리소스 간의 의존성을 그래프로 시각화한다.
* 사용 예시
# 그래프를 .png 이미지 파일로 저장한다.
terraform graph | dot -Tpng > graph.png
13. terraform refresh
- 실제 인프라 상태와 Terraform의 state 파일을 동기화한다.
- 실제 환경을 읽어와 state 파일을 최신 상태로 업데이트한다.
* 사용 예시
terraform refresh
* 출력 결과
# EC2 인스턴스 태그를 AWS 콘솔에서 수동 변경한 경우
# refresh를 실행하면 태그 변경 사항이 state 파일에 적용된다.
Refreshing Terraform state in-memory prior to plan...
aws_instance.example: Refreshing state... [id=i-0abc123456def7890]
14. terraform taint
- 특정 리소스를 강제로 재생성하도록 표시한다.
- 태깅된 리소스는 다음에 terraform apply를 실행할 때 삭제 후 재생성된다.
- 리소스의 변경 없이도 상태를 초기화하거나 리소스를 새로 배포해야 할 때 유용하다.
* 사용 예시
# aws_instance.example 리소스를 삭제하고 새로 생성하도록 표시한다.
terraform taint aws_instance.example
* 적용 후 명령 실행
# 지정된 리소스를 삭제 후 다시 생성한다.
terraform apply
* 출력 결과
Resource instance aws_instance.example marked for tainting.
15. terraform untaint
- terraform taint로 표시된 리소스를 원래 상태로 되돌린다.
* 사용 예시
# aws_instance.example 리소스의 taint 상태를 제거한다.
terraform untaint aws_instance.example
* 적용 후
# terraform apply 실행 시 해당 리소스는 재생성되지 않는다.
* 출력 결과
Resource instance aws_instance.example unmarked as tainted.
'Terraform > [인프런] 아키텍처와 함께하는 Terraform' 카테고리의 다른 글
[실습] ② 단일 Tier Architecture 그려보기 (0) | 2024.11.27 |
---|---|
[실습] ① AWS 프리티어 가입 & Access Key 발급 (0) | 2024.11.27 |
[기본 구성 요소] 워크스페이스 (0) | 2024.11.26 |
[기본 구성 요소] 백엔드(Backends) (0) | 2024.11.26 |
[기본 구성 요소] Modules (0) | 2024.11.26 |