local 백엔드

local 백엔드

Terraform state를 로컬 파일시스템에 저장하는 local 백엔드를 설명해 드릴게요. 기본 백엔드이며 단순하지만 협업에 적합하지 않아요.

출처: 문서

본문

종류: Enhanced

local 백엔드는 state를 로컬 파일시스템에 저장하고, 시스템 API로 그 state를 잠그며, 연산을 로컬에서 수행해요.

예시 구성 (Example Configuration)

terraform {
  backend "local" {
    path = "relative/path/to/terraform.tfstate"
  }
}

데이터 소스 구성 (Data Source Configuration)

data "terraform_remote_state" "foo" {
  backend = "local"

  config = {
    path = "${path.module}/../../terraform.tfstate"
  }
}

구성 변수 (Configuration variables)

다음 구성 옵션을 지원해요:

  • path - (선택) tfstate 파일의 경로. 기본적으로 루트 모듈 기준으로 terraform.tfstate로 설정돼요.
  • workspace_dir - (선택) 기본이 아닌 워크스페이스의 경로.

명령줄 인자 (Command Line Arguments)

이 섹션은 하위 호환성을 위해 보존했지만 더 이상 권장하지 않는 레거시 기능을 설명해요.

backend "local" 블록을 포함하거나 백엔드를 전혀 지정하지 않아 local 백엔드로 기본 설정되는 구성에서, 백엔드에서 state 스냅샷을 읽거나 쓰는 대부분의 명령은 다음 추가 인자를 받아들여요:

  • -state=FILENAME - 이전 state 스냅샷을 읽을 때 state 파일 이름을 재정의해요. -state-state-out 없이 사용하면 Terraform은 -state-state-out 둘 다에 -state 파일 이름을 사용해요. 즉 Terraform이 새 state 스냅샷을 만들면 입력 파일을 덮어써요.
  • -state-out=FILENAME - 새 state 스냅샷을 쓸 때 state 파일 이름을 재정의해요.
  • -backup=FILENAME - local 백엔드가 새 state를 쓸 때 백업 파일을 만들기 위해 보통 동적으로 선택하는 기본 파일 이름을 재정의해요. -state-backup 없이 사용하면 Terraform은 백업 파일 이름을 만들 때 -state 파일 이름을 접두사로 사용해요. -backup=-(파일 이름을 ASCII 대시 문자로 설정)를 사용하면 백업 파일 생성을 완전히 비활성화할 수 있어요.

이 세 옵션은 내장 원격 state가 도입되기 전의 이전 워크플로와의 하위 호환성을 위해 보존된 거예요. 그 시절 사용자는 Terraform 실행 전에 이전 state를 가져오고 실행 후 새 state를 저장하는 래퍼 스크립트를 작성했으며, 이 경우 세 인자는 보통 한 번의 연산에만 사용되는 임시 디렉터리의 경로들이었어요.

이 옵션들은 여러 워크스페이스의 가능성이 도입되기 전에 나온 것이므로, 이들을 설정하면 선택된 워크스페이스에 따라 다른 state 파일 이름을 선택하는 Terraform의 평소 동작을 재정의해요. 세 옵션을 모두 사용하면 선택된 워크스페이스가 Terraform이 state 파일에 선택하는 파일 이름에 영향을 주지 않으므로, 워크스페이스 state 파일을 서로 구분해 유지하려면 직접 다른 파일 이름을 선택해야 해요.

이 세 옵션은 다른 백엔드 유형이 선택된 구성에는 효과가 없어요. 자동화로 Terraform을 실행하더라도 새 시스템에서 이 옵션을 사용하는 것을 권장하지 않아요. 대신 원격 state를 지원하는 다른 백엔드를 선택해 루트 모듈 안에서 구성하면, 구성에서 작업하는 모든 사람이 특별한 명령줄 옵션 없이도 자동으로 올바른 공유 위치에서 state를 검색·저장하게 보장할 수 있어요.

더 알아보기 (Learn more)