Devops Skill Up/AWS

[AWS CI/CD] EC2 배포 CodeDeploy 생성하여 배포 자동화하기

불여우의 길 2024. 4. 12. 18:18

EC2에 어플리케이션을 배포하는 CodeDeploy를 만들어보았습니당당.

 

EC2에 CodeDeploy로 배포를 하려면 필요한 전제 조건이 있습니당.

 

바로 AWS CodeDeploy Agent 설치가 필수적이라는 거지용~

 


AWS CodeDeploy Agent 설치

1. ssm-agent 버전 확인

AWS System Manager로 CodeDeploy를 설치를 합니다

이때 ssm-agent 는 2.3.274.0 이상이여야 합니다.

다행이도 제 EC2 ami으 2.3.274.0 버전 이상이더라고용? 호호

 

EC2 SSH 접속 후 아래 명령어로 버전 확이이 가능합니당

yum info amazon-ssm-agent

 

 

2. System Manager를 사용하여 AWS CodeDeployAgent 설치

  • System Manager - Distributor -AWS CodeDeployAgent - 한번만 설치

  • 대상에 설치할 EC2 선택 - RUN

 

Trouble Shooting☄️

해당 EC2 인스턴스에 권한 문제로 AWS CodeDeploy Agent 설치가 되지 않는 문제가 발생했습니당

설치하려는 인스턴스 iam role 에 AmazonSSMManagedInstanceCore policy를 부여해주어야합니다!

권한을 주어도 바로 적용되지않아서 좀 기다려야하는 것 같아요.

매 정각마다 업데이트 되는 것 같더라구용..

 

3. S3 생성

 

4. EC2 인스턴스 역할 편집

  • 배포가 될 인스턴스의 역할에 S3FullAccess, AmazonEC2RoleforAWSCodeDeploy 권한 추가
  • 권한 추가 후 CodeDeploy Agent restart 가 필요
sudo service codedeploy-agent restart

 

5. CodeCommit에 최상단 루트에 appspec.yml 파일 추가

  • codecommit root 경로에 appspec.yml을 업로드하여 파일 배포 경로 등을 설정
version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/ad-ts-job/python/neo-an-job-analytics
file_exists_behavior: OVERWRITE

 

6. CodeDeploy구성

  1. 애플리케이션 생성
    1. 이름, 컴퓨팅플랫폼(EC2 온프레미스) 입력
    2. 배포그룹 생성
      1. 서비스 역할 : AWSCodeDeployRole 이 있는 역할 선택
      2. 배포 유형 : 현재 위치 (블루/그린 유형 고민)
      3. 환경구성 :
        • EC2 인스턴스
        • 키 Name, 값 Instance 이름 (해당 인스턴스의 태그 값 확인)
      4. 배포설정 : CodeDeployDefaut.AllAtOnce

7. CodePipeline 생성 (배포 자동화)

  1. Source
    1. codecommit, branch 선택

 

이미지가 좀 킹받지만 모자이크로 가려지지 않네요...

 

*build 는 빌드가 필요없을 경우 빌드 단계 건너뛰기

 

2. deploy

  1. codedeploy, application, application group 선택

 

CodeDeploy에서 생성한 배포그룹을 선택해줍니당

 

그러묜 끝~

 

나름 간단하지요?