Devops 도전기/AWS

Terraform 을 이용한 AWS 환경 구성

끝까지해봐야지 2021. 10. 19. 15:13

 

실습 환경을 구성하기전 테라폼이란 무엇인지 간단하게 정리를 하고 진행을 하도록 하겠습니다. 

'테라폼'은 하시코프(Hashicorp)에서 오픈소스로 개발한 'IaC' 도구로, 인프라 자동화를 목표로 설계됐다. 서버 등과 같은 기본적인 인프라 배포에 최적화돼 있다. '앤서블'은 여러 개의 서버를 효율적으로 관리하기 위해 고안된 IT 환경 자동화 도구다

테라폼은 프로그램 코드(Infrstructure as Code)를 사용해 인프라를 구축/ 운영 하는 오픈소스 소프트웨어입니다. 

한마디로 정리하면 다음과 같다.

 테라폼 = 인프라 구축 자동화 
 앤서블 = 서버 관리 자동화 

실습을 위해 필요한 준비물들은 다음과 같다

테라폼 프로그램
https://www.terraform.io/  <- 여기서 자신의 os 환경에 맞는 버전을 설치 가능하다

AWS 계정
https://aws.amazon.com/ 

visual studio code
코드 편집을 위해 


Terraform 

 

1 설치 방법

나는 windows 에서 작업을 할거기 때문에 https://www.terraform.io/downloads.html 에서 windows 64-bit를 다운로드 받아서 진행했다


해당 파일을 다운로드 받아 C:\ 하위에 폴더를 생성하고 terraform 을 넣어준다

 

 

 

 

 

 

2 환경변수 설정하기

제어판 - 시스템 환경 변수 편집 - 고급 - 환경 변수 

 

path - > 새로만들기 - > C:\terraform 추가

 

3 CMD 에서 정상 작동 확인

cd c:\terraform 이동 

 

c:\terraform>terraform version
Terraform v1.0.9
on windows_amd64

 

 

c:\terraform>terraform
Usage: terraform [global options] <subcommand> [args]

 

이런식으로 출력이 되면 정상적으로 설치가 된것이다

 

 

 

Terraform 코드 설정 ( tf 파일 형식)  

 

 

visual studio code 에서 작성

 

 

C:\terraform 폴더 안에 tf 파일들이 들어 있어야한다

 

 

provider.tf 파일 설정

 

 

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

 

access key 와 secret key 는 aws - My Security Credentials - Access keys 에서 생성 가능하다 

 

access key 와 secret key 가 있어야 aws 에 접속해 설정 추가나 변경이 가능하다

 

  region     = "ap-northeast-2" -> 서울 리전에 만들겠다는 의미다

 

 

 

위와같이 다른 tf 파일도 형성해 준다

 

vpc.tf

 

resource "aws_vpc" "test-vpc" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "test-vpc"
  }
}
 
resource "aws_subnet" "test-subnet-c" {
  vpc_id = "${aws_vpc.test-vpc.id}"
  cidr_block = "10.0.1.0/24"
  availability_zone = "ap-northeast-2c"
}

 

routes.tf

 

resource "aws_route_table" "test-route-table" {
  vpc_id = "${aws_vpc.test-vpc.id}"
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = "${aws_internet_gateway.test-gateway.id}"
  }
  tags = {
    Name = "test-route-table"
  }
}
 
resource "aws_route_table_association" "my-subnet-association" {
  subnet_id      = "${aws_subnet.test-subnet-c.id}"
  route_table_id = "${aws_route_table.test-route-table.id}"
}

 

 

resource "aws_internet_gateway" "test-gateway" {
  vpc_id = "${aws_vpc.test-vpc.id}"
tags = {
    Name = "test-gateway"
  }
}

 

위와같이 c:\terraform 안에 tf 파일을 전부 넣어 놓고 정상적으로 만들어지는 확인해본다

 

 

 

c:\terraform>terraform init

 

> 테라폼 디렉토리를 초기화한다는 의미이다

 

 

c:\terraform>terraform plan

> 현재 디렉토리에서 변경사항을 실제 적용하기전에 정상적으로 결과를 확인할때 쓴다

 

c:\terraform>terraform apply

> 실제 생성

 

 

 

정상적으로  생성된것을 볼수있다.

 

AWS 에 접속해 실제로 정상적으로 생성됐는지 확인해보자

 

 

 

설정한것처럼 정상 설정된것을 확인할수 있다

 

 

 

 

해당 설정을 한꺼번에 삭제해보자

 

c:\terraform>terraform destroy

 

단 한번의 명령어로 전부 삭제된것을 확인 가능하다

 

 

이상 terraform 실습을 마치도록 하겠습니다.

 

 

각종 설정 다큐는 아래를 참조하면 된다

 

https://www.terraform.io/docs/index.html

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