소개
Terraform Language Server Protocol (Portable)는 Terraform 구성 파일에 대한 언어 지원을 제공하는 오픈소스 Language Server 구현입니다. juliosueiras가 개발 및 유지 관리하며, 자동 완성, 오류 검사, 하이버 기능 등을 통해 Terraform 코딩 경험을 향상시킵니다. 이 도구는 Visual Studio Code, Atom, Vim, Sublime Text, IntelliJ, Emacs 등 다양한 편집기와 통합되어 작동합니다. 현재 버전은 0.0.11-beta2이며, MIT 라이선스 하에 배포됩니다.
상세정보
변수 복잡 완성
무한 중첩 타입을 지원하는 변수 자동 완성을 제공하여 복잡한 Terraform 모듈 변수 입력을 돕습니다.
Provider 및 Resource 완성
Provider 설정 및 Resource 블록(예: Kubernetes provider와 같은 무한 블록)에 대한 자동 완성을 지원하며, Data source 완성도 포함됩니다.
동적 오류 검사
Terraform 및 HCL 문법에 대한 실시간 오류 검사를 수행하여 코딩 중 오류를 조기에 발견할 수 있도록 도와줍니다.
Provider 바이너리 통신
Provider 바이너리와 직접 통신하여 Terraform 0.12 SDK로 빌드된 어떤 Provider라도 지원할 수 있도록 확장성을 제공합니다.
무한 중첩 변수 완성
Module 내부의 중첩된 변수에 대해서도 무한 수준까지 자동 완성을 지원하여 복잡한 인프라 정의 작업을 용이하게 합니다.
다운로드·설치 방법
공식 릴리스는 GitHub 저장소의 [Releases](https://github.com/juliosueiras/terraform-lsp/releases) 페이지에서 확인할 수 있습니다. 소스 코드에서 직접 빌드하려면 다음 단계를 따릅니다.
- 저장소를 클론하거나 릴리스 아카이브를 다운로드합니다.
- terraform-lsp 디렉터리에서 다음 명령을 실행하여 의존성을 다운로드하고 빌드합니다:
GO111MODULE=on go mod download make
- 선택적으로 DST 매개변수를 지정하여 사용자 정의 경로에 설치할 수 있습니다:
make copy DST="$your_preferred_bin_path"
- Nixpkgs를 사용하는 경우, nixpkgs를 설치한 후
nix-build명령을 실행합니다.
기본 사용법/명령어
빌드 후 생성된 실행 파일은 Language Server로서 편집기의 LSP 클라이언트와 통신합니다. 사용자는 편집기의 설정에서 이 Language Server의 실행 파일 경로를 지정해야 합니다. 예를 들어 Visual Studio Code에서는 settings.json에 “terraform-lsp.serverPath” 설정을 추가하여 사용할 수 있습니다.
지원 환경·시스템 요구사항
이 도구는 Go 1.14 이상이 설치된 Windows, macOS, Linux 시스템에서 빌드 및 실행할 수 있습니다. Language Server Protocol을 지원하는 편집기(Visual Studio Code, Atom, Vim, Sublime Text 3, IntelliJ, Emacs 등)와 함께 사용해야 기능을 발휘합니다.
최신 버전·업데이트
현재 버전은 0.0.11-beta2이며, 저장소의 master 브랜치에서 최신 개발이 진행 중입니다. 업데이트 정보는 GitHub의 [Releases](https://github.com/juliosueiras/terraform-lsp/releases) 페이지에서 확인할 수 있습니다.
제한 사항·확인 사항
- 일부 LSP 기능(hover, signatureHelp, declaration, references 등)은 현재 구현되지 않았거나 부분적으로만 지원됩니다.
- 이 저장소는 실험적 기능에 초점을 맞추고 있으며, 안정성을 중시하는 경우 terraform-ls 프로젝트를 고려할 수 있습니다.
- Terraform v0.15에서 provider JSON 저장 방식 변경으로 인해 호환성 문제가 발생할 수 있습니다.
시스템 요구사항
Go 1.14+가 필요하며, 소스 코드에서 빌드할 경우 make 및 Go 툴체인이 필요합니다.


