| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- AWS 아키텍처 분석
- programmers
- 운영체제
- AWS IAM Role
- AWS 보안 사고 사례 모음
- 리버싱
- 침입 차단 시스템(IPS)
- AWS 침해사고 사례 분석
- AWS 인프라 아키텍처
- dreamhack
- IAM Federation
- reversing
- AWS 침해 사고 사례 분석
- AWS 사고 사례 분석
- AWS
- AWS 인프라 분석
- C
- Amazon S3
- AWS 3 Tier Architecture
- AWS 보안 아키텍처 분석
- AWS Active Directory
- 네트워크
- network
- terraform
- TryHackMe
- reversing.kr
- operating system
- 드림핵
- 프로그래머스
- python
- Today
- Total
lhywk 님의 블로그
Terraform 알아보기 본문
참고 자료 : https://terraform101.inflearn.devopsart.dev/preparation/terraform-basic/
Terraform 기본 :: Terraform & AWS 101
Terraform 기본 Terraform 기본 개념 다음은 테라폼 활용에 필요한 개념입니다. resource : 실제로 생성할 인프라 자원을 의미합니다. ex) aws_security_group, aws_lb, aws_instance provider : Terraform으로 정의할 Infrastr
terraform101.inflearn.devopsart.dev
1. Terraform 기본 개념
Terraform: IaC(Infrastructure as Code)를 통해 네트워크, VM, DB, 클라우드인프라를 구성할 수 있게 도와주는 도구
- resource : 실제로 생성할 인프라 자원을 의미한다.
- ex) aws_security_group, aws_lb, aws_instance 타입을 제공해서 EC2 서버를 선언하고 제어 가능
- provider : Terrafrom과 외부 서비스(모듈)를 연결해주는 기능.
- AWS, GCP와 같은 범용 클라우드, Docker와 같은 모듈 등이 제공됨.
- output : 인프라를 프로비저닝 한 후에 생성된 자원을 output 부분으로 뽑을 수 있다. Output으로 추출한 부분은 이후에 remote state에서 활용할 수 있다.
- backend : terraform의 상태를 저장할 공간을 지정하는 부분이다. backend를 사용하면 현재 배포된 최신 상태를 외부에 저장하기 때문에 다른 사람과의 협업이 가능하다. 가장 대표적으로는 AWS S3가 있다.
- module : 공통적으로 활용할 수 있는 인프라 코드를 한 곳으로 모아서 정의하는 부분이다. Module을 사용하면 변수만 바꿔서 동일한 리소스를 손쉽게 생성할 수 있다는 장점이 있다.
- remote state : remote state를 사용하면 VPC, IAM 등과 같은 공용 서비스를 다른 서비스에서 참조할 수 있다. tfstate파일(최신 테라폼 상태정보)이 저장되어 있는 backend 정보를 명시하면, terraform이 해당 backend에서 output 정보들을 가져온다.
2. Terraform 작동원리
테라폼에는 3가지의 형상이 존재한다.
- Local 코드 : 현재 개발자가 작성/수정하고 있는 코드
- AWS 실제 인프라 : 실제로 AWS에 배포되어 있는 인프라
- Backend에 저장된 상태 : 가장 최근에 배포한 테라폼 코드 형상
여기서 가장 중요한 것은 AWS 실제 인프라와 Backend에 저장된 상태가 100% 일치하도록 만드는 것이다.
테라폼은 이를 위해 import, state 등 여러 명령어를 제공한다.
먼저, 인프라 정의는 Local 코드에서 시작한다.
개발자는 로컬에서 테라폼 코드를 정의한 후에 해당 코드를 실제 인프라로 프로비전한다. 이 때 backend를 구성하여 최신 코드를 저장하는데, 흐름은 아래와 같다.
Terraform init
- 지정한 backend에 상태 저장을 위한 .tfstate 파일을 생성한다. 여기에는 가장 마지막에 적용한 테라폼 내역이 저장된다.
- init 작업을 완료하면, local에는 .tfstate에 정의된 내용을 담은 .terraform 파일이 생성된다.
- 기존에 다른 개발자가 이미 .tfstate에 인프라를 정의해 놓은 것이 있다면, 다른 개발자는 init작업을 통해서 local에 sync를 맞출 수 있다.
Terraform plan
- 정의한 코드가 어떤 인프라를 만들게 되는지 미리 예측 결과를 보여준다. 단, plan을 한 내용에 에러가 없다고 하더라도, 실제 적용되었을 때는 에러가 발생할 수 있다.
- Plan 명령어는 어떠한 형상에도 변화를 주지 않는다.
Terraform apply
- 실제로 인프라를 배포하기 위한 명령어이다. apply를 완료하면, AWS 상에 실제로 해당 인프라가 생성되고 작업 결과가 backend의 .tfstate 파일에 저장된다.
- 해당 결과는 local의 .terraform 파일에도 저장된다.
Terraform import
- AWS 인프라에 배포된 리소스를 terraform state로 옮겨주는 작업이다.
- 이는 local의 .terraform에 해당 리소스의 상태 정보를 저장해주는 역할을 한다. (절대 코드를 생성하는건 x.)
- Apply 전까지는 backend에 저장되지 않는다.
- Import 이후에 plan을 하면 로컬에 해당 코드가 없기 때문에 리소스가 삭제 또는 변경된다는 결과를 보여줍니다. 이 결과를 바탕으로 코드를 작성할 수 있다.
테라폼의 Workflow
테라폼을 사용할 때는 보통 다음의 4단계 과정을 거치게 됨.
| 단계 | 명령어 | 설명 |
| Initialize | terraform init | 테라폼 설정 파일을 읽고 필요한 플러그인(Provider)을 설치. |
| Plan | terraform plan | 코드를 실행했을 때 인프라에 어떤 변화가 생길지 미리 보여줌. |
| Apply | terraform apply | 실제로 인프라를 생성하거나 변경. |
| Destroy | terraform destroy | 생성된 모든 리소스를 한꺼번에 삭제. |
3. Terraform 기본구성
1. main.tf
모듈의 주요 리소스와 구성을 정의하는 파일
2. variable.tf
모듈이 사용하는 변수를 정의하는 파일

3. terraform.tfvars
정의한 변수에 값을 주입하기 위한 파일

4. outputs.tf
모듈에서 생성된 리소스의 출력 값을 정의하는 파일
'AWS' 카테고리의 다른 글
| Terraform Advanced (0) | 2026.03.10 |
|---|---|
| Terraform으로 AWS 리소스 생성 - AWS IAM (1) | 2026.03.10 |
| Terraform으로 AWS 리소스 생성 - S3 (0) | 2026.03.10 |
| Amazon S3 (0) | 2026.03.10 |
| Terraform으로 AWS 리소스 생성 - VPC (0) | 2026.03.10 |