MONG 기술블로그

테라폼 기본 명령어 실습 본문

Terraform

테라폼 기본 명령어 실습

MJHmong 2022. 3. 16. 21:43

이전 시간에 테라폼의 기본 개념들에 대해 알아보았다.

 

요번 시간에는 테라폼에서 사용하는 명령어에 대해 알아보고 직접 실습해보자.

 

■ 테라폼 명령어 ( terraform )

Terraform 주요 명령어

테라폼 주요 명령어에 대해서 간략하게 용도에 대해 알아보자. ( Main Commands )

또한 주요 명령어를 통해 실제로 AWS S3를 생성하는 실습을 진행한다.

 

 

Terraform Main Commands

1. init

- 다른 테라폼 명령어를 위한 워킹 디렉토리를 준비할때 최초로 사용한다.

- 예를들어 provider.tf 파일에 프로바이더 정보를 기입한 뒤에 init 명령어를 사용하여 워킹 디렉토리를 세팅할 수 있다. 

 

2. plan

- 현재 테라폼을 통해 설정한 정보를 통해 실제로 변하는 자원정보를 확인한다.

- 즉 실제로 자원에 대해 변경을 가하는 명령어는 아니며, 반영 전 변경될 자원에 대해 확인을 도와주는 명령어이다.

 

3. apply

- 테라폼 설정정보를 통해 실제 자원을 변경 OR 생성하는 ( IaC 적용 ) 명령어이다.

- terraform apply 시 실제로 구성된 자원정보가 변경되므로 유의하여 사용해야한다.

- 반영된 자원정보는 설정한 backend 와 local의 .tfstate 파일에 저장된다.

 

4. destory

- 테라폼을통해 생성된 자원에 대해 모두 삭제하는 명령어이다.

 

 

S3 생성 실습

 

다음 순서로 진행한다.

 

1. provider.tf 에 AWS Provider 정보 세팅

2. terraform init 명령어를 통해 워킹 디렉토리 준비

3. s3.tf 에 생성할 s3정보 기입

4. terraform plan 명령어로 프로비저닝할 자원정보 확인

5. terraform apply 명령어로 자원 프로비저닝

6. .tfstate 삭제 후 terraform plan 결과 확인

7. terraform import로 이미 구축된 자원정보를 .tfstate에 반영

9. terrraform destory로 생성한 실습자원 삭제

 

 

1.provider.tf 에 AWS Provider 정보 세팅

# provider.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region        = "ap-northeast-2"
  access_key    = ""
  secret_key    = ""
}

 

AWS Provider 세팅을 위해 .tf파일을 생성한다.

https://registry.terraform.io/providers/hashicorp/aws/latest/docs

 

Terraform Registry

 

registry.terraform.io

 

 

2.terraform init 명령어를 통해 워킹 디렉토리 준비

Terraform init Working Directory

`terraform init` 명령어를 사용하여 provider.tf 를 기반으로 Working Directory를 세팅한다.

 

 

3.s3.tf 에 생성할 s3정보 기입

# s3.tf
resource "aws_s3_bucket" "test-s3-bucket" {
  bucket = "mjh-test-s3-bucket"

  tags = {
    Name        = "Name"
    Environment = "mjh-test-s3-bucket"
  }
}

생성할 s3 리소스 정보를 기입한다. 하기 링크를 참고하여 작성했다.

 

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket

 

Terraform Registry

 

registry.terraform.io

 

 

4. terraform plan 명령어로 프로비저닝할 자원정보 확인

terraform plan

`terraform plan` 명령어로 테라폼 코드 기반으로 정의된 자원에 대해 `apply` 적용 시 생성되는 정보에 대해 확인 할 수 있다.

 

 

5. terraform apply 명령어로 자원 프로비저닝

terraform apply

`terraform apply` 명령어를 사용하면 테라폼으로 정의된 자원이 생성된다.

또한 생성된 자원에 대한 정보가 담긴 `terraform.tfstate` 파일이 생성되니 꼭 체크하자.

 

terraform 기반으로 생성된 S3

Provider 정보에 기입한 AWS Account에 접속하여 실제 자원이 생성됨을 확인할 수 있다.

 

 

6. .tfstate 삭제 후 terraform plan 결과 확인

.tfstate는 현재 테라폼으로 구성된 자원의 상태정보를 관리한다.

이를 확인하기위해 .tfstate 파일 삭제 후 terraform plan을 실행해보자.

.tfstate를 삭제하면 기존에 이미 생성한 s3 자원임에도 불구하고 `terraform plan` 명령어 시 새로 생성해야하는 자원으로 인식한다.

따라서 .tfstate에는 테라폼을 통해 생성되었던 자원에 대한 상태정보가 저장된다는것을 알 수 있다.

 

또한 위 상태에서 `terraform apply` 명령어 실행 시 이미 존재하는 자원에 대해 `create`는 불가하므로 에러가 발생한다. 

 

 

7. terraform import로 이미 구축된 자원정보를 .tfstate에 반영

 

이미 구축된 자원에 대해 terraform 으로 관리하는 방법에 대해 알아보자.

다음 명령어를 사용하여 기 생성되어있는 자원정보를 .tfstate에 반영하자.

# 기존에 생성한 s3 리소스 import ( import는 Document의 최하단 참고 )
terraform import aws_s3_bucket.test-s3-bucket mjh-test-s3-bucket

# terraform apply 가능여부 확인
# import가 정상실행되었다면, apply도 정상수행될것.
terraform apply

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket

 

Terraform Registry

 

registry.terraform.io

 

 

8. terrraform destroy로 생성한 실습자원 삭제

 

실습에서 생성한 자원을 모두 삭제하자. `terraform destroy` 명령어를 통해 삭제가 가능하다.

'Terraform' 카테고리의 다른 글

테라폼 고도화 - 1 ( Backend )  (0) 2022.03.21
테라폼 고도화 - 2 ( Variable )  (0) 2022.03.21
테라폼 설치 및 기본 개념  (0) 2022.03.14
Comments