본문 바로가기

DevOps

[AWS] AWS CI/CD 구현 (2) - CodeDeploy 설정

AWS CI/CD 구현 (2) - CodeDeploy 설정

 

AWS CICD CodeCommit + CodePipeline 삽질 적용기 2탄 'CodeDeploy 설정' 입니다.

👇👇 1탄 👇👇

 

[AWS] AWS CI/CD 구현 (1) - CodeCommit, CodeBuild

AWS CICD CodeCommit + CodePipeline 삽질 적용기 1탄 'CodeCommit + CodeBuild 설정' 입니다. 💡확인하기 소스 리포지토리는 AWS CodeCommit을 사용합니다. Gradle, Spring Boot, multi module 구조의 프로젝트 기준입니다. dock

devzooo.tistory.com

 

💡확인하기
  • 소스 리포지토리는 AWS CodeCommit을 사용합니다.
  • Gradle, Spring Boot, multi module 구조의 프로젝트 기준입니다.
  • docker-compose 를 사용합니다.
  • 각 모듈의 최상위에는 Dockerfile 이 정의되어 있습니다.

 


 

2. CodeDeploy 설정

1) CodeDeploy IAM role 설정

배포 작업시 권한들이 추가된 IAM role을 생성합니다.

이전에 만든 ECR 로그인 정책을 추가합니다.

CodeDeployRole

CodeDeployRole

 

2) EC2 IAM 권한 생성

EC2에서 codebuild, codedeploy 작업을 가능하게 하도록 role을 생성합니다.

이전에 만든 ECR 로그인 정책, CodeBuild 정책을 포함합니다.

ec2-code-deploy

 

ec2-code-deploy

 

3) EC2에 IAM 연결

위에서 생성한 role을 대상 EC2 IAM에 연결합니다.

EC2
EC2 IAM

 

4) CodeDeploy 생성

배포 항목을 생성합니다.

애플리케이션 생성

CodeDeploy 생성 1

배포그룹 생성

CodeDeploy 배포그룹 생성 1
CodeDeploy 환경구성
CodeDeploy 배포설정

 

5) EC2에 codedeploy-agent 설치

aws configjre에 IAM 액세스 키 값들을 설정합니다.

각 값들은 AWS IAM 콘솔 → 보안 자격 증명 에서 확인할 수 있습니다.
$ aws configure list
aws configure
  • access_key : ID
  • secret_key : Secret Key
  • region : 사용하는 리전

ruby, codedeploy-agent를 설치합니다.

# ruby
$ yum install -y ruby

$ cd /home/ec2-user

# codedeploy-agent
$ wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto

정상 구동 확인하기

# 확인
$ service codedeploy-agent status
# 정상 RES
The AWS CodeDeploy agent is running as PID 379

AWS IAM 권한이 변경되면 codedeploy-agent 재시작해야 합니다.

# IAM 수정하면 재시작해야함!
$ service codedeploy-agent restart

 

6) appspec.yml 정의

배포하려는 모듈 최상위 경로에 배포 설정 파일 appspec.yml 을 정의합니다.

# AWS CodeDeploy Script
version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/
permission:
  - object: /home/ec2-user/
    pattern: "**"
    owner: ec2-user
    group: ec2-user
    mode: 755

hooks:
  # 배포 후 custom 작업 정의
  AfterInstall:
    - location: deploy.sh
      timeout: 180
      runas: root   # docker

 

7) docker-compose.yml 내 image 경로 변경

image: [ECR 경로]/[ECR 리포지토리명]:[태그(default: latest)]

 


 

👇👇 3탄 👇👇

 

[AWS] AWS CI/CD 구현 (3) - CodePipeline 생성

아무도 안써서 내가 쓰는 AWS CI/CD 적용기 (3) AWS CodeCommit + CodePipeline 삽질 적용기 3탄 'CodePipeline 생성 + Trouble Shooting' 입니다. 👇👇 1탄 👇👇 [AWS] 아무도 안써서 내가 쓰는 AWS CI/CD 적용기 (1) AWS Cod

devzooo.tistory.com

 

 

728x90