본문 바로가기
AWS/Part 4. Ch03 패커를 이용한 머신 이미지 관리

CH03_04 빌더 (Builder)

by Engineer-Lee 2022. 6. 7.
반응형

빌더란 어떤 종류의 머신 이미지를 만드느냐를 결정하는 요소이다.

 

빌더를 통해 AWS ec2 인스턴스를 만드는 방법은 5가지가 있는데 그중에 EBS를 이용하여 AMI를 만들게 될 것이다.

 

그리고 이번 시간에는 null 빌더를 통해 패커와 관련된 HCL 문법을 알아보자

참고로 null 빌더란 아무것도 하지 않는 빌더이다.

https://www.packer.io/docs/builders/null

 

Packer by HashiCorp

The null Packer builder is not really a builder, it just sets up an SSH connection and runs the provisioners. It can be used to debug provisioners without incurring high wait times. It does not create any kind of image or artifact.

www.packer.io

https://github.com/tedilabs/fastcampus-devops/tree/main/2-packer/02-builder

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

먼저 sources 파일을 보면 두 가지 소스 블록이 정의되어 있다.

소스 블록이 의미하는 것은 빌더이다. 즉 null 빌더를 이용하고 있고 "one"과 "two"라는 이름을 지정했다.

속성 값으로 communicator의 값은 프로비저닝과 관련있다. 프로비저닝은 주로 ssh나 win_rm을 통해 하는데 null 빌더의 경우 아무것도 만들지 않으므로 none으로 설정했다.

 

 

main 파일을 보면 build 블록이 있다. build 블록은 실제 빌더를 이용해서 빌드 프로세스를 정의한다.

name 속성은 빌드 프로세스의 이름을 추가해준다.

sources라는 속성 값은 방금 전에 정의했던 source.null.one, source.null.two를 참조하고 있다.

따라서 null.one의 이름이 fastcampus-packer.null.one으로 null.two의 이름이 fastcampus-packer.null.two로 바뀐다

 

 

다음 코드를 보면 build 블록 안에 또 source 블록을 정의하고 있다.

이는 기존에 정의한 source 파일의 블록에 extends 하도록 도와준다. 기존 파일에 정의된 속성 값을 overwrite할 수는 없다.

따라서 null.one의 이름이 fastcampus-packer-fill-in.null.terraform으로 null.two의 이름이 fastcampus-packer-fill-in.null.vault로 바뀐다.

 

 

packer build를 하면 6가지 빌드가 순서 상관없이 잘 실행된 걸 볼 수 있다. 

 

 

 

 

 

다음으로 build 블록의 구성을 알아보자

https://github.com/tedilabs/fastcampus-devops/tree/main/2-packer/03-builder-full

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

main 파일은 EBS를 이용하여 AMI를 만든다는 빌드 프로세스가 정의되어 있다. 

provisioner와 post-processor의 선언 순서는 지켜줘야 한다.

 

source 파일은  EBS 빌더를 이용해서 서울리전의 t2.micro ubuntu 인스턴스를 사용한다는 소스가 있다.

 

반응형