Contents

Packer vs AWS EC2 Image Builder

골든 이미지는 OS 영역을 포함해 필수 패키지가 설치된 일종의 표준 이미지 개념입니다.

  • 장점
    • 공통 부분을 미리(패키징) 해둠으로써 인스턴스 프로비저닝 시간을 최소화함
    • 새 이미지로부터 새로운 객체들을 생성하기 때문에 보안 관점에서도 좋음.
  • 단점
    • 주기적인 이미지를 다시 만들어야하는 번거로움 예시로, 설치된 패키지 중 특정 버전에 취약점이 발견 시 해당 패키지가 업데이트된 이미지를 다시 만들어 줘야한다.
    • 더 큰 문제는 이미지를 생성한 이후의 작업(테스트,공유)들도 덩달아 공수를 유발한다는 것 또한 부담이다.

Golden image 즉 AMI를 최신 상태로 유지하기 위해 인스턴스 업데이트 및 스냅샷 생성 작업을 수동으로 수행하거나 이미지를 유지 관리하는 자동화 스크립트를 빌드해야하는데, 이 과정은 시간 소모적이고 리소스 집약적이며 오류가 발생하기 쉽습니다.

그래서 이 과정을 자동화된 빌드 파이프라인을 사용하여 OS 이미지를 더 쉽고 빠르게 빌드하고 유지 관리할 수 있는 서비스를 알아보려합니다.

  • packer
  • AWS Image Builder

“하나의 설정 소스로 여러 플랫폼 머신/컨테이너 이미지를 만드는 도구”, 가상 머신 이미지를 만들어주는 오픈 소스라고 생각하면된다.

크게 말해서 IaC(Infrastructure As a Code) 중 Provisioning 도구, 세분화해서 보면 이미지 빌드 도구라고 보면 된다.

가상 머신의 특정 상태를 저장하는 방법을 사용하지 않고, 이미지 생성 과정에 대한 모든 정보를 코드로 관리한다.

작동 원리

  1. 빠른 인프라 배포 수초 안에 Packer로 만든 이미지를 사용하여 Terraform으로 배포하게되면 몇초 안에 빠르게 배포 할 수 있다.
  2. 다중 환경에 대한 이식성 함수와 다양한 변수, 실행 옵션 등을 활용해서 다양한 환경에 맞는 수준 높은 자동화를 구성할 수 있다. AWS뿐만 아니라 여러 Provider에서 사용 가능하다.
  3. 안정성 향상 Packer에서 설치 및 구성한 안정적인 이미지에서 인스턴스를 프로비저닝하면 버그가 있는 소프트웨어가 배포되지않으므로 안정성이 향상된다.
  4. 개발/프로덕션 환경의 동등성 여러 플랫폼에 대해 이미지를 동시에 생성하여 개발, 스테이징 및 프로덕션 환경을 최대한 비슷하게 유지 할 수 있다.
  5. 안정적인 Continuous Delivery 여러 플랫폼에 대한 새 시스템 이미지를 생성 한 후, 시작 및 테스트하여 인프라 변경에 대한 작동을 잘 하는지 확인을 한 후 Terraform을 사용하여 프로덕션 환경에서 이미지로 사용할 수 있다.
  6. 데모 생성 지속적으로 변화하는 소프트웨어 및 소프트웨어 어플라이언스 또는 일회용 프로덕션 데모를 빠르게 만들 수 있다.

19년도에 출시된 서비스로 AMI를 관리하고 구축하는 도구로 “이미지를 안전하고 최신 상태로 유지하기 위해 자동화된 파이프라인"이라고 표현한다.

AWS 또는 온프레미스에서 사용하기 위해 가상 머신 및 컨테이너 이미지의 구축, 테스트 및 배포를 간소화한다.

Image Builder를 사용하면 간단한 그래픽 인터페이스, 기본 자동화 및 AWS 제공 보안 설정을 통해 이미지를 최신 상태로 유지하는 작업들을 수동으로 진행하거나 자체 자동화 파이프 라인을 구축하지 않아도된다.

이미지를 생성, 저장 및 공유하는 데 사용되는 기본 AWS 리소스 비용 외에는 무료로 제공된다.

작동 원리

  1. IT 생산성 향상
  2. 보다 간편한 보안 유지 필수 구성 요소만으로 이미지를 만들 수 있어 보안 취약점 노출을 줄일 수 있다. 보안 패치가 제공되면 자동으로 패치한다. AWS 제공 보안 정책 또는 사용자 지정 보안 정책을 이미지에 적용할 수 있다.
  3. 가상 머신 및 컨테이너 이미지 모두를 구축하고 테스트하기 위한 일관된 워크플로우 공통 워크 플로우를 사용하여 한 곳에서 최신 가상 머신 및 컨테이너 이미지를 구축하고 보안하며 테스트하는 위치를 제공
  4. 기본 제공 검증 지원 이미지를 사용하기 전에 AWS 제공 테스트 및 자체 테스트를 통해 이미지의 기능, 호환성 및 보안 규정 준수 여부를 쉽게 검증할 수 있다.
  5. AWS 계정에서 이미지 공유 간소화 AWS Resource Access Manager, AWS Organizations 및 Amazon ECR과 통합하여 AWS 계정에서 자동화 스크립트, 레시피 및 이미지를 공유할 수 있다.

Packer는 AWS의 AMI 뿐만아니라 다양한 클라우드 서비스를 위한 이미지를 생성 할 수 있지만, AWS EC2 Image Builder는 당연하겠지만 AWS만 지원한다.

AWS EC2 Image Builder는 빌드 프로세스에서 테스트를 통합 할 수 있다. 테스트 프레임워크를 사용하면 AWS 리전에 배포하기 전에 OS 업데이트로 인해 발생하는 비호환성을 파악할 수 있다. AWS 제공 테스트 및 자체 테스트를 모두 실행하여 테스트 진행 시 테스트 실행, 결과 및 게이트 다운스트림 작업을 관리할 수 있다.

Packer는 Codepipeline에서 추가 단계를 설정해야된다.

EC2 Image Builder는 SSM을 사용하여 모든 명령을 실행하므로 이 기본 AMI에 SSM 에이전트가 설치되어 있어야 하지만, Packer는 모든 주요 Linux 기본 AMI를 사용할 수 있으며 SSH/WinRM을 사용하여 실행 중인 인스턴스와 통신한다.

Packer는 콘솔에 모든 로그를 출력한다. –debug 플래그를 사용하여 더 많은 로깅을 활성화 시킬 수 있다.

EC2 Image Builder는 Cloudwatch Logs에서 파이프라인 프로세스의 모든 로깅을 출력한다. 이를 통해 여러 실행에 대한 로그도 확인이 가능하고, 필터링을 사용하여 트리거를 추가할 수 있다.

두 가지를 조사하고 간단하게 AMI를 만들어보면서 참고할 자료의 양이 Packer가 훨씬 많았다. AWS EC2 Image Builder 경우 공식 문서 외엔 거의 참고 할 자료가 없고, 공식 문서 또한 없는 정보들이 많다.

https://www.europeclouds.com/blog/building-amis-packer-and-image-builder

https://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/what-is-image-builder.html

https://www.packer.io/docs