본문 바로가기

Infra/Google Cloud

[Google Cloud] Google Study Jam : Build Infrastructure with Terraform on Google Cloud (1)

728x90
반응형
본 포스트는 2024년 Google Study Jam을 공부하면서 개인적으로 내용을 정리한 포스트 입니다.

 

 

Terraform Fundamentals - Terraform?

Terraform은 인프라를 안전하고 효율적으로 구축, 변경 및 버전 관리할 수 있는 도구이다.

 

Terraform은 기존의 인기 있는 서비스 제공업체와 맞춤형 내부 솔루션 모두를 관리할 수 있다.

 

구성 파일은 Terraform에게 단일 애플리케이션이나 전체 데이터 센터를 운영하는 데 필요한 구성 요소를 설명합니다.

 

Terraform은 원하는 상태에 도달하기 위해 수행할 작업을 설명하는 실행 계획을 생성하고, 이를 실행하여 설명된 인프라를 구축한다. 구성 변경이 발생하면 Terraform은 어떤 변경이 있었는지를 파악하고 이를 적용할 수 있는 점진적인 실행 계획을 생성한다.

 

Terraform이 관리할 수 있는 인프라는 컴퓨트 인스턴스, 스토리지, 네트워킹과 같은 저수준 구성 요소부터 DNS 항목 및 SaaS 기능과 같은 고수준 구성 요소까지 포함된다.

 

주요기능

  1. 코드로서의 인프라: 인프라는 고급 구성 구문을 사용하여 설명된다. 이를 통해 데이터 센터의 청사진을 버전 관리하고 다른 코드처럼 취급할 수 있다. 또한 인프라를 공유하고 재사용할 수 있습다.
  2. 실행 계획: Terraform은 실행 계획을 생성하는 단계가 있다. 이 실행 계획은 apply 명령을 실행할 때 Terraform이 무엇을 할지를 보여준다. 이를 통해 Terraform이 인프라를 조작할 때 예기치 않은 상황을 피할 수 있다.
  3. 리소스 그래프: Terraform은 모든 리소스의 그래프를 구축하고, 의존성이 없는 리소스의 생성 및 수정을 병렬로 수행한다. 이를 통해 Terraform은 인프라를 최대한 효율적으로 구축할 수 있으며, 운영자는 인프라의 의존성에 대한 통찰을 얻을 수 있다.
  4. 변경 자동화: 복잡한 변경 세트를 최소한의 인간 상호작용으로 인프라에 적용할 수 있다. 앞서 언급한 실행 계획과 리소스 그래프 덕분에 Terraform이 무엇을, 어떤 순서로 변경할지를 정확히 알 수 있어 많은 인간 오류를 피할 수 있다.

 

 

 

Terraform Fundamentals - Task 1. Verifying Terraform installation

Cloud Shell 탭에서 다음 명령어를 입력하면 help 문서가 출력된다.

terraform

 

Terraform Fundamentals - Task 2. Build omfrastructure

Terraform에서 인프라를 설명하는데 사용되는 파일 세트는 Terraform configuration으로 알려져 있다.

 

구성 파일의 형식은 Terraform Language Documentation 에 나와있고 구성파일은 JSON 형식을 사용하는게 좋다.

 

Cloud Shell에 다음을 입력한다.

touch instance.tf

 

Open Editor를 열고 instance.tf를 수정한다.

resource "google_compute_instance" "terraform" {
  project      = ""
  name         = "terraform"
  machine_type = "e2-medium"
  zone         = ""

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
    }
  }
}

 

resource 블록은 인프라 내에 존재하는 리소스를 정의한다. 블록을 열기전에 두 개의 문자열을 갖는다. 각각 순서대로  resource typeresource name 이다. 

 

다음 명령어도 *.tf 형태의 다른 테라폼 파일이 없는지 확인한다. 왜냐하면 Terraform이 모든 파일을 로드하기 때문이다.

ls

 

다음 명령어를 입력해서 provider binary(공급자 바이너리)를 다운로드하고 설치한다.

terraform init

 

 

execution plan(실행 계획)을 만든다.

terraform plan

 

instance.tf와 같은 level의 위치에서 다음 명령을 실행한다.

terraform apply

 

이때 나오는 출력에서 "+" 옆에 있는 것들은 새로운 리소스를 생성한다는 의미이다.

 

실행 계획이 성공적으로 생성되면 Terraform은 진행전에 일시중지하고 승인을 해야한다. 프로덕션 환경에서 위험해보이는 경우 취소한다. 취소할 시 인프라는 변경되지 않는다.

 

계획이 적절해 보이는 경우 "yes"를 타이핑하면 Terraform은 인프라 변경을 진행한다.

 

Navigation menu > Compute Engine > VM instances에서 만들어진 인스턴스를 확인한다.

 

Terraform은 terraform.tfstate 파일에 일부 데이터를 기록한다. 이 파일은 매우 중요하다.

(Terraform이 관리 대상을 알 수 있도록 생성된 리소스의 ID를 추적한다.)

 

terraform show

728x90
반응형