설명
Terraform 모듈을 git::https://... 형태로 가져오면서 ?ref=로 revision을 지정하지 않으면 원격 저장소의 기본 브랜치를 사용합니다. 모듈을 새로 설치하거나 업데이트할 때 기본 브랜치 변경에 따라 이전과 다른 코드를 받을 수 있습니다.
검증한 모듈 버전을 명확히 선택해야 변경 시점을 통제하기 쉽습니다. 브랜치와 태그는 다른 커밋을 가리키도록 바뀔 수 있으므로, 같은 코드를 재현하려면 검토한 전체 커밋 해시로 고정하세요.
잠재적 영향
- 모듈 코드가 예고 없이 바뀌어 인프라 동작이 달라질 수 있습니다.
- 배포 실패 원인이 모듈 변경인지 자체 코드 변경인지 구분하기 어려워집니다.
- 검증되지 않은 변경이 운영 환경에 반영될 수 있습니다.
해결 방법
Git 모듈 소스에 검토한 revision을 ?ref=로 명시하세요. 변경되지 않는 참조가 필요하면 전체 커밋 해시를 사용하고, 모듈 업그레이드는 별도 검토와 테스트를 거쳐 적용하세요.
예시
다음은 Git 모듈 참조 방식의 비교입니다. example.com 주소는 실제 모듈 저장소로 바꾸세요.
변경 전
hcl
module "network" {
source = "git::https://example.com/terraform-modules/network.git"
}
변경 후
hcl
module "network" {
source = "git::https://example.com/terraform-modules/network.git?ref=v1.4.2"
}
변경 후 예시는 v1.4.2 태그를 선택합니다. 태그가 이동하면 받는 코드도 달라질 수 있으므로 이 설정만으로 불변성이 보장되지는 않습니다.