본문 바로가기
카테고리 없음

terraform 테라폼 인스턴스 생성

by IT맥구리나스 2023. 8. 4.

terraform 인스턴스 생성

테라폼 코드를 통해 인스턴스를 만들 수 있다. 이를 통해 GUI를 통한 생성보다 작업속도를 빠르게 할 수 있다.

 

세부내용

테라폼 코드를 저장할 저장 디렉토리를 만든다.

저장할 디렉토리에 이동 후 touch main.tf를 통해 파일을 만든다. 이곳에 GCP에 수행할 작업을 담는다.

 

그리고 초기화 설정 명령어인 terraform init을 최초 1회 수행해야하는데 이유는 다음과 같다.

 

1. 플러그인 다운로드
- terraform init은 해당 Terraform 프로젝트에서 사용되는 플러그인들을 다운로드하고 설치함
- Terraform은 다양한 클라우드 제공자(GCP, AWS 등)와 다양한 리소스를 관리하기 위해 플러그인 아키텍처를 사용함. 이 명령어를 통해 사용하는 클라우드 제공자에 맞는 플러그인들을 자동으로 가져옴

 

2. 버전 관리
- terraform init은 특정 Terraform 프로젝트에서 사용할 버전을 확인하고, 필요한 경우 모듈과 제공자의 버전을 고정함
- 이렇게 함으로써 프로젝트를 특정 버전과 호환되도록 유지할 수 있음
3. 백엔드 설정
- terraform init은 테라폼 상태 파일을 저장할 백엔드 설정을 수행함 
- 백엔드 설정은 테라폼 상태 파일을 저장할 위치를 지정하는데 사용되며, 로컬 파일 시스템이나 원격 스토리지에 저장할 수 있음
4. 모듈 설치
- terraform init은 필요한 경우 모듈을 다운로드하고 설치한다.
- 모듈은 Terraform에서 코드를 재사용하고 구조화하는 데 사용되는 기본 단위를 말함

5. 환경 구성
- terraform init은 기타 Terraform 설정을 초기화하고 구성하는데 사용됨 
- 예를 들어, 변수 파일에 대한 위치를 지정하거나 Terraform 뒷단에 영향을 미치는 설정들을 초기화한다

 

terraform init을 실행하지 않은 상태에서 terraform plan이나 terraform apply를 시도하면 다음과 같은 오류가 발생함

Terraform has not been initialized!
You must run "terraform init" to initialize the working directory
prior to running any other Terraform commands.

 

init 명령어 까지 수행했으면 main.tf를 vi 편집기로 열어 아래 소스코드를 붙여 넣는다.

 

provider "google" {
  credentials = file("/root/service_account/gcp-ie1-897f2d989055.json")
  project     = "프로젝트아이디"
}

resource "google_compute_instance" "default" {
  name         = "terraformi-seo"
  machine_type = "f1-micro"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-os-cloud/ubuntu-2204-lts"  # 우분투 22.04 버전 이미지 사용
    }
  }

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

 

아래 명령어를 순차적으로 실행한다. terraform apply 후 프롬프트에서는 yes를 누른다.

terraform plan
terraform apply

 

부팅이미지의 경우 구글에서 제공하는 os이미지를 사용했는데 목록을 보려면

gcloud compute images list

로 확인하면 된다.

 

커스터마이징한 이미지를 조회하려면 

gloud compute images list --project 프로젝트ID --no-standard-images

로 조회하면 된다.

 

반응형

댓글