Terraform이란 ?
테라폼은 코드로 인프라를 관리 할 수 있는 도구입니다.
AWS, Azure GCP 등 Terraform 을 사용해 인프라를 만들고 변경하고
버전관리를 안전하고 효율적으로 사용 할 수 있습니다.
Terraform을 왜 사용할까요?
수 많은 서버들을 콘손들로 직접 생성한다면 엄청난 리소스가 소요 됩니다.
테라폼을 사용하면 쉽고 빠르게 인프라를 구성 할 수 있습니다.
Terraform 설치 방법
MAC OS 를 기준으로 설명하겠습니다.
$ brew install terraform
Terraform이 잘 설치 되어 있는지 확인합니다.
$ terraform -version
Terraform을 사용하기 전에 GCP를 관리하려면 서비스 계정 키값이 필요합니다.
아래에서 GCP 서비스 계정 키값을 만들어 보겠습니다. 먼저 API 및 서비스 탭으로 들어갑니다.
사용자 인증 정보로 들어가게 되면 [사용자 인증정보 만들기] 버튼이 있습니다. 이어서 [서비스 계정] 탭으로 들어갑니다.
Terraform 계정을 위해 생성하는 키 값이기 때문에 저는 Terraform-account로 생성하였습니다. 다른 서비스 계정 이름으로 하셔도 상관 없습니다.
키 만들기 버튼을 누르시면 우측에 키 만들기(선택사항)창이 뜨게 됩니다.
json 파일 형식으로 생성하고, 다운로드 받습니다.
Terraform을 실습할 파일 트리는 이렇습니다.
저는 이미 코드를 테스트해서 여러 파일이 있는데 main, provider, variable만 보시면 될 것 같습니다.
variable.tf
말 그대로 변수들을 모은 파일이라고 생각하시면 됩니다.
main.tf 에서만으로도 vm 인스턴스를 생성 할 수 있으나, 같은 인프라에서 재 사용하지 못 할 것 입니다. 변수파일을 생성 하면 코드를 재사용 하면 시간을 더 효율적으로 사용할 수 있습니다.
변수파일 코드를 작성할 때 구글 클라우드 SDK 가 있는데, 명령어 하나로
인스턴스 이미지, 머신 타입, 리전들을 리스트로 볼 수 있습니다.
SDK 설치 방법은 생략하도록 하겠습니다.
$gcloud compute image list
위 명령어를 터미널에 입력하면 구글 인스턴스 이미지 리스트를 출력합니다.
$ gcloud compute regions list
위 명령어는 Google cloud platform에 있는 리전들의 리스트를 출력합니다.
$ gcloud compute machine-types list | grep us-central1
위 명령어는 머신타입들의 리스트입니다. grep 을 통해서 리전별로 머신 타입들을 정렬 할 수 있습니다.
아래와 같이 main.tf 파일을 작성합니다.
이제 기본적으로 provider.tf, variable.tf, main.tf 파일을 생성했습니다.
필요한건 다 생성했으니, 한번 GCP에 생성되나 보면 됩니다.
$ terraform init
$ terraform plan
variable.tf 파일에서 instance_name 타입을 string으로 해놓았기 때문에
인스턴스 이름은 terraform plan 명령어 실행 후 직접 설정할 수 있습니다.
$ terraform apply
terraform apply 명령어로 인스턴스가 약 20초만에 생성되었습니다.
한번 GCP에 인스턴스가 생성되었는지 확인해 봅시다.
terraform이라는 인스턴스가 생성되었습니다.
마지막으로 클라우드 환경에서 인스턴스를 생성 할 때 왜 terraform을 쓸까 라는 생각이 들기도했다. 클라우드 콘솔을 직접 사용하면 더 빠르게 할 수 있는데, 하지만 terraform을 사용하면 여러개의 인스턴스를 직접 콘손로 생성하는것보다 코드로 빠르게 생성 할 수 있다. 그리고 깃허브를 사용해 버전관리가 가능하다. 라는 점에서 유용한 도구라고 생각한다.
감사합니다.
틀린부분은 지적 해주시면 감사하겠습니다 :D
[Terraform]GCP VM인스턴스 생성하기
Terraform이란 ? 테라폼은 코드로 인프라를 관리 할 수 있는 도구입니다. AWS, Azure GCP 등 Terraform 을 사용해 인프라를 만들고 변경하고 버전관리를 안전하고 효율적으로 사용 할 수 있습니다.
medium.com