DevOps/Terraform

Terraform 이란 (프로비저닝 도구와 코드형 인프라)?

728x90
반응형

코드형 인프라

코드형 인프라란 코드를 작성 및 실행하여 인프라를 생성, 배포, 수정, 정리하는 것을 말한다. 이는 서버를 물리적으로 설치하는 등의 하드웨어 측면을 포함하여 운영의 모든 측면을 소프트웨어적으로 생각하는 중대한 사고 전환을 보여준다. 실제로 데브옵스의 핵심은 서버, 데이터베이스, 네트워크, 로그 파일, 애플리케이션 구성, 문서, 자동화된 테스트, 배포 프로세스 등 거의 모든 것을 코드로 관리할 수 있다는 것이다. 코드형 인프라 도구에는 다섯 사지 범주가 있다.

  • 애드혹 스크립트 //배시쉘 스트립트
  • 구성 관리 도구 //앤서블
  • 서버 템플릿 도구 // Docker , Packer, Vagrant
  • 오케스트레이션 도구 // Docker , Packer, Vagrant
  • 프로비전 도구 // Terraform , CloudFormation , OpenStack Heat

 

프로비저닝 도구 //Terrform , CloudFormation , OpenStack Heat

구성관리, 서버 템플릿 및 오케스트레이션 도구가각 서버에서 실행되는 코드를 정의한다면 Terraform, CloudFormation, OpenStack Heat(오픈스택 히트)와 같은 프로비전 도구는 서버 자체를 생성한다. 사실상 프로비전 도구를 사용하면 서버만 생성하는 것이 아니라 데이터베이스, 캐시, 로드밸런서, 큐, 모니터링 , 서브넷 구성, 방화벽 설정, 라우팅 규칙 설정, SSL(Secure Sockets Layer) 인증서 등 인프라에 관한 거의 모든 부분을 프로비저닝 할 수 있다.

 

Terraform이란?

Terraform은 (HashiCorp)사가 Go 언어로 개발한 오픈 소스 도구이다. 운영 체제마다 바이너리 파일이 존재하는데 Go코드는 하나의 바이너리 파일로 컴파일되며 Terraform이라는 명령어로 실행할 수 있다.

이 바이너리를 사용하여 어떤 컴퓨터에서든 인프라를 배포할 수 있으며 이를 위해 추가 인프라를 생성할 필요가 없다. 정확하게는 Terraform 바이너리가 AWS,Azure,GCP,NCP등의 공급자를 대신해 API를 호출하여 리소스를 생성한다.

즉, 테라폼은 클라우드 공급자가 제공하는 API 서버를 활용할 뿐만 아니라 AWS에 이미 보유한 API 키 같은 인증 메커니즘도 같이 사용한다는 의미이다.

 

Terraform은 어떻게 API를 호출할까? 테라폼은 생성하려는 인프라 정보가 담겨 있는 텍스트로 이루어진 테라폼 구성 파일을 생성하여 API를 호출한다. 

resource "awd_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
resource "google_dns_recors_set" "a" {
name = "demo.google-example.com"
managed_zone = "example-zone"
type ="A"
ttl =300
rrdatas = [aws_instance.example.public_ip]
}

위 코드는 AWS를 호출할 API를 생성하여 서버를 생성한다. 그런 다음 API가 구글 클라우드를 실행하여 AWS의 서버에 접속하기 위한 서버 IP주소를 지정하는 DNS 정보를 생성하도록 하는 내용이다.

이처럼 테라폼을 사용하면 하나의 단순한 구문으로 여러 클라우드에 상호 연결된 리소스를 배포할 수 있다.

 

 

 

*참고

테라폼업앤러닝 책

 

728x90
728x90