AWS CICD CodeCommit + CodePipeline 삽질 적용기 2탄 'CodeDeploy 설정' 입니다.
👇👇 1탄 👇👇
💡확인하기
- 소스 리포지토리는 AWS CodeCommit을 사용합니다.
- Gradle, Spring Boot, multi module 구조의 프로젝트 기준입니다.
- docker-compose 를 사용합니다.
- 각 모듈의 최상위에는 Dockerfile 이 정의되어 있습니다.
2. CodeDeploy 설정
1) CodeDeploy IAM role 설정
배포 작업시 권한들이 추가된 IAM role을 생성합니다.
이전에 만든 ECR 로그인 정책을 추가합니다.
CodeDeployRole
2) EC2 IAM 권한 생성
EC2에서 codebuild, codedeploy 작업을 가능하게 하도록 role을 생성합니다.
이전에 만든 ECR 로그인 정책, CodeBuild 정책을 포함합니다.
ec2-code-deploy
3) EC2에 IAM 연결
위에서 생성한 role을 대상 EC2 IAM에 연결합니다.
4) 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탄 👇👇
728x90
'DevOps' 카테고리의 다른 글
[AWS] AWS CI/CD 구현 (3) - CodePipeline 생성 (21) | 2024.03.12 |
---|---|
[AWS] AWS CI/CD 구현 (1) - CodeCommit, CodeBuild (23) | 2024.03.10 |
[Jenkins] Github 프로젝트 Jenkins CICD (2) - Pipeline 작성 (13) | 2024.03.09 |
[Jenkins] Github 프로젝트 Jenkins CICD (1) - 환경설정 (14) | 2024.03.08 |