[AWS] appspec

on_cloud·2023년 3월 26일
0

AWS

목록 보기
4/13
post-thumbnail

appspec이란?


Code Deploy를 실행하기위해 yaml 형식의 스크립트

appspec 기본구조


version: 0.0
os: <os>
files:
  - source: <source>
    destination: <path>
hooks:
  BeforeInstall:
    - location: scripts/BeforeInstall.sh
      timeout: 100
      runas: root
  AfterInstall:
    - location: scripts/AfterInstall.sh
      timeout: 100
      runas: root
  ApplicationStart:
    - location: scripts/ApplicationStart.sh
      timeout: 100
      runas: root
  ApplicationStop:
    - location: scripts/ApplicationStop.sh
      timeout: 100
      runas: root
  ValidateService:
    - location: scripts/ValidateService.sh
      timeout: 100
      runas: root

appspec section


version

version: 0.0 #appspec의 version을 나타냅니다.

os

os: <os> #appspec에서 사용할 os를 정의합니다.

files

files:
  - source: <source> #appspec에서 사용할 source data를 정의합니다.
    destination: <path> #appspec에서 사용할 data 경로를 정의합니다.

build

hooks: #appspec에 사용할 스크립트를 정의합니다.
  BeforeInstall:
    - location: scripts/BeforeInstall.sh #스크립트가 실행될 경로를 정의합니다.
      timeout: 100 #스크립트가 실행될 시간을 정의합니다.
      runas: root #appspec을 실행할 유저를 정의합니다.
  AfterInstall:
    - location: scripts/AfterInstall.sh
      timeout: 100
      runas: root
  ApplicationStart:
    - location: scripts/ApplicationStart.sh
      timeout: 100
      runas: root
  ApplicationStop:
    - location: scripts/ApplicationStop.sh
      timeout: 100
      runas: root
  ValidateService:
    - location: scripts/ValidateService.sh
      timeout: 100
      runas: root

appspec 구조


위의 항목들을 event라고 정의합니다. 실행되는 순서는 다음과 같습니다.
1. Start

  • event의 처음 시작이며 Code Deploy를 설치하고 인스턴스에 배포할 준비를 합니다.

2. Application Stop

  • 이전 프로그램에서 실행되는 스크립트 및 환경을 멈춥니다.

3. DownloadBundle

  • Code Deploy Agent에서 새로운 버전의 파일들을 인스턴스로 불러옵니다.

4. BeforeInstall

  • 해당 부분에서 실행되는 파일들을 압축하며, 현재버전의 백업본을 만듭니다.

5. Install

  • DownloadBundle을 통해 가져온 파일들의 압축을 해제하며, appspec.yml에 명시된 파일들을 지정한 경로에 보냅니다.

6. AfterInstall

  • 해당

7. ApplicationStart

  • 구버전을 신버전으로 업그레이드합니다.

8. ValidateService

  • 배포가 성공했는지 확인합니다.

9. End

  • event의 마지막으로 해당 배포가 성공했는지 알람을 보냅니다.
profile
클라우드 엔지니어가 목표인 학생

0개의 댓글