본문 바로가기

IT 정보

[테라폼 쿡북] 테라폼 프로바이더 업그레이드하기

* 본포스팅은 <테라폼 쿡북>에서 발췌한 내용으로 작성되었습니다.

 

 

테라폼 구성에 사용된 프로바이더의 버전을 최신 상태로 유지하는 것은 테라폼 모범 사례 중 하나이다. 특히 terraform init 명령을 실행할 때 문제가 발생한다면 테라폼 프로바이더 업그레이드를 통해 해결해 볼 수 있다. 이번 예제에서는 테라폼 프로바이더를 업그레이드하는 방법에 대해서 배워보자.

 

 

  준비 사항

이번 예제를 진행하려면 테라폼이 설치되어 있어야 하며 다음과 같이 간단한 테라폼 구성이 작성된 main.tf 파일이 필요하다.

 

이 구성에서는 azurerm 프로바이더의 2.67.0 버전을 사용하겠다는 것을 명시했다.

 

 

  작동 방법

첫 번째 단계로 main.tf 파일이 있는 폴더에서 다음과 같이 init 명령을 실행한다.

 

 

다음 그림 1.20은 init 명령의 실행 결과를 보여준다.

 

 

실행이 완료된 후 확인해 보면 테라폼이 .terraforhttp://m.lock.hcl이라는 이름의 새로운 파일을 생성했다는 것을 볼 수 있다. 이 파일에는 테라폼 프로바이더에 대한 해시 값과 버전이 포함되어 있다. 다음 그림 1.21은 .terraforhttp://m.lock.hcl 파일 내용 중 일부이다.

 

 

이 파일은 테라폼 프로바이더의 버전 정보를 포함하고 있다. 또한 terraform init 명령은 .terraform 폴더 내에 프로바이더 바이너리를 다운로드한다. 두 번째 단계로 다음과 같이 프로바이더의 버전을 업그레이드하기 위해 azurerm 프로바이더의 버전을 3.0.0으로 수정한다.

 

 

그리고 terraform init 명령을 재실행하면 다음과 같은 에러 메세지를 볼 수 있다.

 

 

마지막으로 이 오류를 수정하고 테라폼 구성이 제대로 동작하게 하려면 다음과 같이 terraforminit 명령을 실행한다.

 

 

테라폼 프로바이더가 최신 버전으로 업데이트된 것을 볼 수 있다. 동일한 프로바이더 버전을 사용해서 동일한 구성을 일관되게 적용할 수 있도록 VCS(깃과 같은)에 잠금 파일을 유지 관리하고, 중간자 공격(Man in the Middle, MITM)을 방어할 수 있도록 테라폼 작업용 컴퓨터와 해시코프 배포 채널 사이에 추가 보안 레이어를 구성하는 것이 좋다.

 

하지만 terraform init 명령은 실행 중인 플랫폼(예, 윈도우 운영체제 전용)에 대한 해시만 저장한다는 것을 유의해야 한다. 만약 다른 플랫폼에서 테라폼 구성을 사용 하려면 terraform providers lock 명령을 사용해야한다.

 

 

  작동 원리

첫 번째 단계에서는 terraform init 명령을 실행한다. 이 명령은 다음 과정을 진행한다.


• 명시된 azererm 프로바이더의 버전을 다운로드한다.
• .terraforhttp://m.lock.hcl 파일을 생성하고 프로바이더의 버전과 해시에 대한 정보를 저장한다.


그리고 두 번째 단계에서는 azurerm 프로바이더의 버전을 3.0.0으로 업그레이드하고, init 명령을 재실행해서 새 버전 해시 값을 .terraforhttp://m.lock.hcl에 씌여진 값과 비교한다.


하지만 버전 해시가 다르기 때문에 terraform init 명령은 버전 비호환성 에러 메시지를 보여주고 업그레이드하는 방법을 표시해 준다.(그림 1.24 참고) 마지막으로 에러를 수정하기 위해 terraform init -upgrade 명령을 실행한다. 이 명령을 통해 .terraforhttp://m.lock.hcl에 씌여진 기존 버전의 해시 값이 새로운 버전의 해시 값으로 변경된다.

 

 


 

《테라폼 쿡북》

예스24

 

 

반응형