퀴즈: init 과 의존성 잠금 파일
잠금 파일의 provider 블록에서 version 과 constraints 는 각각 무엇을 뜻하는가?
- version 은 허용한 범위이고 constraints 는 그중 실제로 고른 하나다
- version 은 실제로 고른 하나이고 constraints 는 설정이 허용한 범위다
- version 은 프로바이더 스키마 판이고 constraints 는 도구 자체의 최소 판이다
- version 은 마지막 init 시각이고 constraints 는 그때 쓰인 플랫폼 목록이다
잠금 파일의 해시 한 줄을 손으로 고친 뒤 init 을 돌렸다. 무슨 일이 일어나는가?
- 도구가 어긋난 해시를 새 값으로 조용히 덮어쓰고 설치를 계속한다
- 해시는 참고 정보라 무시되고 버전 제약만으로 설치가 진행된다
- 꾸러미가 기록된 어느 체크섬과도 맞지 않는다며 설치를 거절한다
- 경고만 남기고 설치한 뒤 다음 apply 에서 상태를 새로 만든다
앞 문제 상황에서 tofu init -upgrade 만 붙여 다시 돌리면 어떻게 되는가?
- 같은 체크섬 검사에 다시 걸려 그대로 막힌다
- -upgrade 는 해시 검사를 건너뛰므로 설치가 성공한다
- 잠금 파일이 통째로 지워지고 새 계약서가 만들어진다
- 제약을 만족하는 다음 버전으로 내려가 설치가 성공한다
새로 받은 저장소에서 init 없이 바로 plan 을 돌리면?
- 프로바이더를 쓰지 않는 부분까지만 계획을 세우고 나머지는 건너뛴다
- 계획을 세우면서 필요한 프로바이더를 그 자리에서 자동으로 받아 온다
- 프로바이더 선택이 없다며 계획을 멈추고 init 을 돌리라고 안내한다
- 빈 상태로 간주해 모든 리소스를 새로 만드는 계획을 보여 준다
설치된 프로바이더 바이너리가 놓이는 .terraform/providers/ 디렉터리를 커밋하지 않는 이유로 가장 알맞은 것은?
- 그 안의 파일이 매번 새 이름으로 바뀌어 병합 충돌이 끊이지 않기 때문이다
- 플랫폼마다 다른 실행 파일이고 init 이 언제든 다시 만들어 주기 때문이다
- 프로바이더 라이선스가 바이너리 재배포를 금지하고 있기 때문이다
- 상태 파일과 같은 위치에 있어 비밀이 함께 새어 나가기 때문이다
사내 파일 시스템 미러만 쓸 수 있는 환경에서 잠금 파일을 init 없이 만들거나 고치려면?
tofu providers mirror로 미러를 다시 내려받은 뒤 잠금 파일을 복사한다tofu providers schema -json의 출력을 잠금 파일 형식으로 변환해 저장한다tofu providers lock에 미러 경로를 가리키는 옵션을 주고 플랫폼을 지정한다tofu init -upgrade를 돌려 미러의 최신 꾸러미로 해시를 새로 적게 한다