-
Terraform | Terraform 이란Iac 2022. 1. 20. 21:57
테라폼은 Hashicorp에서 만든 Iac(Infrastructure as Code) 도구입니다.
간단하게 설명하자면 AWS상에서 콘솔에 접속하여 클릭으로 생성하던 클라우드 인프라를
코드로 작성하고, 작성된 코드에 맞게 클라우드 인프라를 생성해주는 기능을 합니다.
여기서 말하는 코드는 HashiCorp에서 개발한 언어인 HCL을 사용하게 됩니다.
Terraform 설치
간단하게 Terraform을 사용해보기 위해서는 2가지(Terraform, aws계정)가 필요합니다.
테라폼 설치는 다음을 통해서 할 수 있습니다.
Terraform 명령어
간단한 예제를 실행해보기 전에 Terraform의 몇 가지 개념들에 대해서 정리하고 넘어가도록 하겠습니다.
Terraform은 크게 init plan apply destroy라는 명령어를 통해서 인프라를 생성하고 삭제할 수 있습니다.
init
Terraform 프로젝트를 초기화하는 데 사용됩니다.
init을 하게 될 경우 실행한 경로에 .terraform파일이 생성되며 지정한 Provider에 해당하는 파일을 다운로드합니다.
plan
HCL로 작성한 인프라(예제는 AWS)에 대한 생성 계획을 보여줍니다.
apply
HCL로 작성한 인프라에 대한 생성 계획을 보여주고, 생성할지에 대한 여부를 묻습니다.
yes를 입력하게 되면 작성된 코드에 맞게 인프라가 생성됩니다.
인프라가 생성, 변경되었을 경우 해당 상태를 terraform.state라는 파일을 통해서 관리되도록 합니다.
destroy
만들어진 인프라를 삭제합니다.
apply와 반대로 삭제되는 리소스들을 조회한 후 yes를 입력하게 되면 삭제를 진행합니다.
Terraform 예제
설치가 완료되었으면 간단하게 AWS에서 VPC를 생성하는 예제를 실행시켜봅시다.
# main.tf # provider로 AWS사용 provider "aws" { region = "ap-northeast-2" default_tags { tags = { Terraform = "true" } } } # 새로운 VPC생성 resource "aws_vpc" "this" { cidr_block = "10.0.0.0/16" tags = { Name = "main" } }
AWS에 VPC를 생성할 것 이기 때문에 provider로 aws를 사용하였습니다.
VPC resource의 경우 Terraform Registry를 참고하였습니다.
먼저 main.tf를 생성하여 위의 코드를 붙여 넣은 다음 init을 실행합니다.
terraform init
init이 완료되면 plan 명령어를 통해 생성되는 리소스들을 확인합니다.
terraform plan
현재는 vpc하나만 생성하는 것 이기 때문에 위와 같이 created 되는 plan을 확인할 수 있습니다.
plan으로 vpc가 생성되는 걸 확인했으면 적용을 위해 apply를 합니다.
terraform apply
apply후 yes를 입력하게 되면 위와 같이 vpc가 생성되는 것을 확인할 수 있습니다.
(생성된 VPC는 AWS콘솔을 통해 확인할 수 있습니다.)
추가적으로 terraform.state파일에 생성된 인프라에 대한 정보가 있는 것을 확인할 수 있습니다.
마지막으로 생성된 vpc삭제를 위해 destroy를 합니다.
terraform destroy
apply와 마찬가지로 yes를 입력하게 되면 만들어진 vpc가 삭제되는 것을 확인할 수 있습니다.
마무리
AWS의 인프라를 코드로 형상을 관리할 수 있다는 부분에 굉장히 메리트가 있다고 생각합니다.
테라폼을 사용하게 되면 구상한 아키텍처에 맞게 Terraform Registry를 찾아보며 만드느라 시간이 보다 오래 걸리긴 하지만 어느 정도 적응을 하고 나면 콘솔보다는 확실히 편하게 느껴지는 것 같습니다.
추후에는 간단한 아키텍처들을 만들어보는 예제를 정리해보도록 하겠습니다.
감사합니다.
'Iac' 카테고리의 다른 글
Terraform | EKS 만들어 보기 (0) 2022.01.28 Terraform | Terraform State (0) 2022.01.23 Terraform | Terraform 버전관리 (0) 2022.01.21