Golden AMI...?

Golden image란? 골든 이미지는 OS 영역을 포함해 필수 패키지가 설치된 일종의 표준 이미지 개념입니다.이 표준 이미지를 잘 활용하면 여러가지 이점이 생깁니다. 공통 부분을 미리(패키징) 해둠으로써 인스턴스 프로비저닝 시간을 최소화하고, 새 이미지로 부터 새로운 객체들을 생성하기 때문에 보안 관점에서도 여럴가지 이점이 있습니다.

  • 문제점
    • 주기적인 이미지를 다시 만들어야하는 번거로움 예시로, 설치된 패키지 중 특정 버전에 취약점이 발견 시 해당 패키지가 업데이트된 이미지를 다시 만들어 줘야한다.
    • 더큰 문제는 이미지를 생성한 이후의 작업(테스트,공유)들도 덩달아 공수를 유발한다는 것 또한 부담이다.

Image Builder

  • 주요 기능
    • OS 이미지 생성, 유지 , 검증 , 배포 작업의 파이프라인 생성
    • AWS 및 On-premise 환경의 이미지 생성 및 유지 관리 지원
    • 같은 조직(AWS organization) 내에서 생성 이미지 공유
  • 대상(`19년 12월 기준)
    • Amazon Linux 2, Window Server(2019/2016/2012 R2)만 지원
    • 기존 AWS AMI, EBS 스냅샷 이미지 형식만 지원
  • 요금
    • Image Builder 자체에 대한 과금은 없음
    • 로그 저장, 이미지 생성, 저장, 공유에 사용되는 AWS 리소스에 대한 부분만 과금

테스트

image Builder를 사용하여 Apache가 설치된 이미지를 생성하고 생성된 AMI로 인스턴스를 생성하는 과정을 진행

Ec2 image Builder
  1. console을 통해 접속 
  2.  

파이프라인을 구성하기 위한 레시피 생성
  • 레시피에는 OS,이미지,생성할 이미지에 빌드 및 테스트 할 컴포넌트 선택
  • image builder에서 관리하는 ami를 지정 or 기존 생성 ami or 사용자 지정 ami 가능
  1. 레시피 생성 
  1. 이미지 선택
  2. os 버전 또한 선택이 가능합니다.

     

  1. 구성 요소아마존에서 기본으로 제공하는 컴포넌트를 선택하거나 사용자가 직접 만들어 사용가능
    1. 새로 구성요소 생성
    1. inastll_apache, update_os 구성요소 생성
    1. 문서 정의 - yaml
      • 코드
        install_apache
        
        
          name: install_apache
        
          description: This is install_apache testing document.
        
          schemaVersion: 1.0
        
          
        
          phases:
        
            - name: build
        
              steps:
        
                - name: InstallApache
        
                  action: ExecuteBash
        
                  inputs:
        
                    commands:
        
                      - sudo yum install httpd -y
        
                      - sudo systemctl enable httpd
        
                      - sudo systemctl start httpd
        
           
        
            - name: validate
        
              steps:
        
                - name: CheckApache
        
                  action: ExecuteBash
        
                  inputs:
        
                    commands:
        
                      - rpm -qi httpd
        
           
        
            - name: test
        
              steps:
        
                - name: TestApache
        
                  action: ExecuteBash
        
                  inputs:
        
                    commands:
        
                      - curl localhost
        -------------------------------------------------------
        update_os
        
        
          name: update_os
        
          description: This is os_update testing document.
        
          schemaVersion: 1.0
        
           
        
          phases:
        
            - name: build
        
              steps:
        
                - name: InstallLinuxUpdate
        
                  action: UpdateOS

         

  1. 구성요소 선택
      위에서 만들어진 컴포넌트를 추가한다.
  1. 테스트 구성 요소
      테스트도 동일하게 amazon 에서 제공하는 컴포넌트를 사용하거나 직접 작성한컴포넌트를 사용할수 있습니다.
      차이점 : 이미지가 빌드된 후 테스트를 진행합니다.
    해당 챕터에서는 직접 작성하지 않고 제공하는 simple-boot-test를 사용이후 레시피 생성
파이프라인 생성
  1. 빌드 일정 지정 가능
    • 테스트 진행을 위해 수동으로 설정
  1. 레시피 선택
  1. 새 인프라 구성
    1. iam role 생성
    1. 기타 설정
      • 추가적인 인스턴스 타입 , sns , vpc ,서브넷,보안그룹, 트러블 슈팅등을 생성가능
    1. 리전설정
      • 마지막 설정 부분입니다. 생성 이미지에 라이센스를 연결하거나
      • 생성된 이미지의 이름, 해당 리전,시작 권한등을 설정가능합니다.
    1. 파이프라인 생성
확인 작업
  1. 생성된 파이프라인을 실행시켜 ami를 확인
  1. 파이프라인 실행 동작
    • 파이프라인을 실행할시 생성한 리전에서 빌드, 테스트 작업이 이루어지며 AMI가 생성
  1. AMI 생성
  1. 인스턴스 생성
  1. 웹 서버 접속 test

결론


  • 이미지 생성, 관리 등 관련 작업이 간편하다
  • AWS 에서 이미지 생성, 관리를 해주기 때문에 이미지에 대한 보안의 취약점 감소
  • 이미지에 도입하는 구성 요소를 독자적으로 작성하거나 만든 이미지로 테스트도 독자적으로 가능하다.
  • 이 모든 과정을 파이프라인으로 구성하여 간편하게 자동화가 가능하다.]

 

  •  

 

'Automation' 카테고리의 다른 글

SSM Automation을 통한 자동화  (0) 2022.08.23
image builder 2  (0) 2021.06.16
auto-scaling scale-out시 run-command동작  (0) 2021.03.29
Lambda Ec2 start / stop Tag기반  (0) 2021.01.20

+ Recent posts