https://github.com/harryjhin/terraform-study
https://github.com/harryjhin/terraform-study
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/harryjhin/terraform-study
- Owner: HarryJhin
- Created: 2025-02-03T13:53:40.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-02-03T14:06:41.000Z (4 months ago)
- Last Synced: 2025-02-13T06:42:42.352Z (3 months ago)
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Terraform Study
## 테라폼이란?
테라폼(Terraform)은 **HashiCorp**에서 개발한 오픈 소스 인프라스트럭처 자동화 도구입니다. 주요 특징은 다음과 같습니다:
1. 코드로 인프라 관리: 클라우드 및 온프레미스 리소스를 코드로 정의하고 프로비저닝할 수 있습니다.
2. 다중 클라우드 지원: AWS, Google Cloud, Azure 등 다양한 클라우드 플랫폼을 지원합니다.
3. 선언적 구성: `HCL`(HashiCorp Configuration Language)을 사용하여 원하는 인프라 상태를 선언합니다.
4. 상태 관리: 인프라의 현재 상태를 추적하고 일관성을 유지합니다.
5. 자동화된 인프라 프로비저닝: 코드 한 줄로 복잡한 인프라 환경을 신속하게 생성하고 변경할 수 있습니다.## 테라폼 설치
### macOS
```shell
brew install terraform
```### Windows
1. [Terraform 다운로드 페이지](https://www.terraform.io/downloads.html)에서 `Windows`용 바이너리 파일을 다운로드합니다.
2. 압축을 해제한 후 `terraform.exe` 파일을 `PATH` 환경 변수에 추가합니다.
3. 설치 확인:
```shell
terraform --version
```## 테라폼 기본 개념
테라폼을 사용하기 위해 알아야 하는 몇 가지 기본 개념이 있습니다.
### 1. Provider
테라폼이 인프라를 관리하는 대상을 `Provider`라고 합니다. AWS, Google Cloud, Azure 등 다양한 클라우드 플랫폼을 지원합니다.
```hcl
provider "aws" {
region = "ap-northeast-2"
}
```### 2. Resource
`Resource`는 인프라를 구성하는 각 요소를 정의하는 블록입니다. EC2 인스턴스, VPC, 서브넷 등이 `Resource`에 해당합니다.
```hcl
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
```### 3. Module
`Module`은 특정 기능을 가진 코드 블록을 재사용하기 위한 단위입니다. 코드를 모듈로 분리하여 관리하면 코드의 가독성과 재사용성을 높일 수 있습니다.
```hcl
module "vpc" {
source = "./modules/vpc"
}
```### 4. State
테라폼이 관리하는 인프라의 현재 상태를 `State` 파일에 저장합니다. 이 파일은 테라폼 명령을 실행할 때 생성되며, 인프라의 변경 이력을 추적하고 일관성을 유지하는 데 사용됩니다.
```shell
terraform.tfstate
```## 테라폼 명령어
테라폼을 사용할 때 자주 사용하는 명령어는 다음과 같습니다.
### 1. `terraform init`
테라폼 프로젝트를 초기화합니다. Provider 플러그인을 설치하고 모듈을 불러옵니다.
```shell
terraform init
```### 2. `terraform plan`
테라폼이 실행할 변경 사항을 미리 확인합니다. 실제로 인프라를 변경하지는 않습니다.
```shell
terraform plan
```### 3. `terraform apply`
테라폼이 변경 사항을 적용하여 인프라를 생성하거나 업데이트합니다.
```shell
terraform apply
```### 4. `terraform destroy`
테라폼이 관리하는 인프라를 삭제합니다.
```shell
terraform destroy
```## 참고 자료
- [Terraform 공식 문서](https://www.terraform.io/docs/index.html)
- [Terraform Tutorial](https://learn.hashicorp.com/collections/terraform/aws-get-started)