티스토리 뷰

저번 포스트에서는 local provider 을 활용해서 local_file 로 로컬 시스템의 파일을 관리해 보았다.

이번 포스트에서는 AWS Provider 를 활용해서 AWS 리소스를 다루어 본다.

 

우선, Terraform Registry 에 접속하여 AWS Provider 에 들어간다.

 

USE PROVIDER 를 클릭하면, 이전과 동일하게 두 가지 블록을 볼 수 있다. 아래에 Example Usage 를 보며 설정을 진행해 보자.

단, 사전에 aws-cli 를 통한 보안 자격 증명 설정이 진행되어 있어야 원활히 진행할 수 있다.

 

보안 자격 증명 설정이 잘 진행되어 있다면, 터미널에서 다음 명령어를 실행했을 때 로컬에 설정해 놓은 값이 정확히 보일 것이다.

aws sts get-caller-identity

 

AWS VPC 다루기

AWS 의 네트워크 계층인 AWS 의 VPC 를 다루어 보자.

aws_vpc 리소스에 foo 라는 이름으로 만들고, VPC 네트워크 영역에서 사용할 CIDR 영역을 10.0.0.0/16 으로 표현해 본다.

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_vpc" "foo" {
  cidr_block = "10.0.0.0/16"
}

 

이후, 이번에 새롭게 aws provider 를 사용하기 때문에, terraform init 을 다시 실행해야 aws provider 를 정상적으로 활용할 수 있다.

 

이후 plan 을 실행하면 다음과 같이 새로운 AWS VPC 가 생성되는 것을 확인할 수 있다.

terraform plan

 

실제로 apply 하기 전에, AWS Console 에 접속하여 현재 VPC 의 리스트를 확인해 보자. 현재 필자의 Console 에는 두 개의 VPC 가 존재하는 것을 확인할 수 있다.

 

 

이제 apply 를 하고, VPC 가 새로 생성된 것을 확인해 보자.

terraform apply

 

아래와 같이 Terraform 에서 정의한 VPC 가 신규로 생성되는 것을 볼 수 있다.

 

이제 새로 생성된 VPC 에 대한 데이터를 output 으로 출력해 보자.

vpc_foo 라는 output 만들고, value 에 aws_vpc 의 foo 를 적용해 보자.

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_vpc" "foo" {
  cidr_block = "10.0.0.0/16"
}

output "vpc_foo" {
  value = aws_vpc.foo
}

 

수정된 코드를 반영하기 위해 apply 를 진행하게 되면, 다음과 같이 해당 VPC 의 정보가 출력되는 것을 확인할 수 있다.

 


 

지금까지 Terraform 을 이용하여 Write, Plan, Apply 를 해보았다. 이번에는 기존 Terraform 리소스에 변경 사항을 만들어 보자.

 

VPC 에 Tag 추가하기

이번에는 위에서 생성했던 VPC 에 태그 (Tags) 를 생성해 보자.

resource "aws_vpc" "foo" {
  cidr_block = "10.0.0.0/16"
  
  tags = {
    "Name" = "This is test vpc"
  }
}

위와 같이 tags 를 추가한 다음, terraform apply 를 통해 반영해 보자.

기존 VPC 에 태그가 추가됨을 확인할 수 있다.

 

CIDR Block 변경하기

이번에는 위에서 생성했던 VPC 의 CIDR Block 을 변경해 보자. 기존에 10.0.0.0/16 이었던 값을 10.123.0.0/16 으로 변경한다.

resource "aws_vpc" "foo" {
  cidr_block = "10.123.0.0/16"

  tags = {
    "Name" = "This is test vpc"
  }
}

 

이후 terraform apply 를 수행하면, 기존과 다르게 삭제 후 새로 생성하는 것을 볼 수 있다.

AWS VPC 라는 개체 자체가 AWS 상에서 CIDR 값은 변경 가능한 개체가 아니다. Terraform 에서는 이점을 인지하고 있기 때문에 이 경우에는 기존 VPC 가 삭제된 후 새로운 VPC 로 교체되어야 함을 의미하는 것이다.

 

해당 내용을 apply 하고, 다시 AWS Console 로 돌아가서, 새로운 VPC 가 생성된 것을 확인해 보자.

 

Terraform 은 각각의 리소스에 대해서 어떤 속성을 변경했을 때, 자체적으로 변경이 가능한지 혹은 새로운 리소스로 교체해야만 교체가 가능한지를 인지하고 있다. Terraform 의 리소스를 변경하고 apply 할 때 항상 Plan 내용을 반드시 검토하여 정확한 변경 사항을 파악한 후 apply 하는 과정이 필요하다..

 

지금까지 AWS VPC 리소스를 생성해 보았다.

다음 포스트에서는 AWS Provider 에서 Data Sources 를 사용해 보겠다.

'인프라 > Terraform' 카테고리의 다른 글

Intellij HCL 설정하기  (0) 2022.08.16
Terraform 다루어보기 (local_file)  (0) 2022.08.15
Terraform 소개  (0) 2022.08.12
Terraform 설치 및 기본 설정  (0) 2022.08.11
Terraform 이 무엇인가?  (0) 2022.08.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함