파일과 구성 구조

파일과 구성 구조

Terraform 언어 코드는 어떤 파일에 저장되고, 디렉터리와 모듈이 어떻게 구성되는지 설명해 드릴게요. Terraform 구성을 이해하는 첫걸음이 되는 부분이에요.

출처: 문서

본문

파일 확장자 (File Extension)

Terraform 언어로 작성한 코드는 .tf 확장자를 가진 일반 텍스트 파일에 저장해요. 그리고 언어의 JSON 기반 변형은 .tf.json 확장자로 표기하며, 다음 문서에서 자세히 다뤄요.

Terraform 코드가 담긴 파일을 보통 구성 파일(configuration file)이라고 불러요.

텍스트 인코딩 (Text Encoding)

구성 파일은 반드시 UTF-8 인코딩을 사용해야 해요. 관례적으로 Windows 식 줄바꿈(CRLF)보다 Unix 식 줄바꿈(LF)을 주로 사용하지만, 둘 다 허용돼요.

디렉터리와 모듈 (Directories and Modules)

모듈(module)은 한 디렉터리에 함께 보관된 .tf 및/또는 .tf.json 파일들의 모음이에요.

  • Terraform 모듈은 디렉터리의 최상위 구성 파일들만 포함해요. 중첩된 하위 디렉터리는 완전히 별개의 모듈로 취급되며, 구성에 자동으로 포함되지 않아요.
  • Terraform은 모듈의 모든 구성 파일을 평가해서, 전체 모듈을 하나의 문서처럼 취급해요. 여러 블록을 다른 파일로 나누는 것은 순전히 읽고 유지보수하는 사람의 편의를 위한 것이며, 모듈의 동작에는 영향을 주지 않아요.

Terraform 모듈은 모듈 호출을 사용해서 다른 모듈을 명시적으로 구성에 포함할 수 있어요. 이런 자식 모듈은 로컬 디렉터리(부모 모듈 디렉터리에 중첩되거나 디스크 어디든)에서 오거나, Terraform Registry 같은 외부 소스에서 올 수 있어요.

루트 모듈 (The Root Module)

Terraform은 항상 단일 루트 모듈(root module)의 맥락에서 실행돼요. 완전한 Terraform 구성은 루트 모듈과 자식 모듈 트리(루트 모듈이 호출한 모듈들, 그리고 그 모듈들이 또 호출한 모듈들 등)로 이루어져요.

  • Terraform CLI에서 루트 모듈은 Terraform을 실행한 작업 디렉터리예요. (명령줄 옵션으로 작업 디렉터리 밖의 루트 모듈을 지정할 수도 있지만, 실제로는 드물어요.)
  • HCP TerraformTerraform Enterprise에서 워크스페이스의 루트 모듈은 기본적으로 구성 디렉터리(버전 관리 저장소 또는 직접 업로드로 제공)의 최상위 레벨이지만, 워크스페이스 설정에서 하위 디렉터리를 대신 지정할 수도 있어요.

더 알아보기 (Learn more)