여러 terraform plugin을 재사용해서 디스크 용량 절약하기
여러 terraform 프로젝트에서 terraform plugin을 공유하도록 설정해서 디스크 용량을 아낄 수 있다.
Terraform에서 AWS, kubernetes 등을 사용할 때는 plugin을 설치해야합니다. 기본적으로 plugin은 프로젝트의 .terraform 디렉토리의 설치되기 때문에 프로젝트마다 같은 plugin을 사용해도 중복해서 설치됩니다. 관리하는 terraform 프로젝트가 적다면 큰 문제가 없지만 프로젝트 수가 많아지면 용량은 무시할 수 없을 정도가 됩니다. 저의 경우 코드 자체는 200 MiB 정도인데 각 프로젝트에서 terraform init을 했더니 40 GiB가 넘어가는 경우도 있었습니다(AWS plguin binary의 크기는 650 MiB 정도).
이를 해결하기 위해 plugin을 각 프로젝트마다 사용하지 않고 공유 디렉토리에 설치해 사용하는 방법이 있습니다. TF_PLUGIN_CACHE_DIR 환경 변수를 설정하면 terraform CLI에서 해당 디렉토리에 plugin을 설치하고 사용하게 됩니다. 다른 프로젝트에서 같은 plugin을 사용할 때 공유하게 되어 디스크 용량을 대폭 절약할 수 있습니다.
저의 경우 아래 코드를 .zshrc에 추가해서 사용하고 있습니다. 참고로 terraform에서 디렉토리를 자동으로 만들지 않으니 수동으로 생성해야합니다.
export TF_PLUGIN_CACHE_DIR="$HOME/.terraform.d/plugin-cache"