https://aws.amazon.com/ko/codedeploy/
CodeDeploy 란?
AWS EC2, Lambda, 온프레미스 인스턴스 등과 같은 컴퓨팅 서비스로
어플리케이션 / 소프트웨어 배포를 자동화하는 완전관리형 배포 서비스 입니다.
1. 역할/정책 생성하기
CodeDeploy 를 위한 역할을 생성 해 줍니다.
역할의 이름도 설정 해 줍니다.
역할 생성 후 정책을 변경해 줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"codedeploy.us-east-2.amazonaws.com",
"codedeploy.us-east-1.amazonaws.com",
"codedeploy.us-west-1.amazonaws.com",
"codedeploy.us-west-2.amazonaws.com",
"codedeploy.eu-west-3.amazonaws.com",
"codedeploy.ca-central-1.amazonaws.com",
"codedeploy.eu-west-1.amazonaws.com",
"codedeploy.eu-west-2.amazonaws.com",
"codedeploy.eu-central-1.amazonaws.com",
"codedeploy.ap-east-1.amazonaws.com",
"codedeploy.ap-northeast-1.amazonaws.com",
"codedeploy.ap-northeast-2.amazonaws.com",
"codedeploy.ap-southeast-1.amazonaws.com",
"codedeploy.ap-southeast-2.amazonaws.com",
"codedeploy.ap-south-1.amazonaws.com",
"codedeploy.sa-east-1.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
정책-정책 생성으로 들어 가 줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::replace-with-your-s3-bucket-name/*",
"arn:aws:s3:::aws-codedeploy-us-east-2/*",
"arn:aws:s3:::aws-codedeploy-us-east-1/*",
"arn:aws:s3:::aws-codedeploy-us-west-1/*",
"arn:aws:s3:::aws-codedeploy-us-west-2/*",
"arn:aws:s3:::aws-codedeploy-ca-central-1/*",
"arn:aws:s3:::aws-codedeploy-eu-west-1/*",
"arn:aws:s3:::aws-codedeploy-eu-west-2/*",
"arn:aws:s3:::aws-codedeploy-eu-west-3/*",
"arn:aws:s3:::aws-codedeploy-eu-central-1/*",
"arn:aws:s3:::aws-codedeploy-ap-east-1/*",
"arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
"arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
"arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",
"arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
"arn:aws:s3:::aws-codedeploy-ap-south-1/*",
"arn:aws:s3:::aws-codedeploy-sa-east-1/*"
]
}
]
}
정책을 다음과 같이 JSON 코드에 설정 해 줍니다.
정책의 이름을 설정 해 줍니다.
EC2 에 부여할 역할도 하나 더 생성하러 가 줍니다. 이 역할에 금방 생성한 정책을 추가 해 줄 예정입니다.
금방 생성한 ec2-codedeploy와 s3FullAccess 를 연결 해 줍니다.
마지막으로 역할의 이름도 설정 해 줍니다.
2. 시작 구성 설정하기
Ec2- 시작구성으로 가서 생성 해 줍니다.
여기선 Codedeploy agent 를 위한 설정을 진행 해 줍니다.
AMI ID- ami-01711d925a1e4cc3a
구성환경을 다음과같이 꾸며 줍니다.
Role 을 연결 시켜 줍니다.
추가 구성환경의 유저데이터에도 명령어를 미리 넣어줍니다.
#!/bin/bash
yum update -y
yum install -y ruby
curl -O https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
원하는 보안그룹과 key 도 설정 해 주면서 마무리 해 줍니다.
3. Auto Scaling 생성하기
오토 스케일링 그룹을 생성 해 줍니다.
Asg 의 이름을 설정 해 주고 시작구성으로 변경해서 금방 만든 시작구성을 연결 해 줍니다.
이후 네트워크 설정에서 해당하는 vpc와 가용영역 A/C 로 설정 해 줍니다.
로드밸런싱 관련 설정을 해 줍니다.
Asg 타켓그룹 설정과 Health checks 도 이어서 해 줍니다.
Capacity 설정을 해주고 나머지는 기본값으로 해서 생성을 마무리 해 줍니다.
3. 코드 소스 설정하기
개발환경 도구로 사용중인 Cloud9 에서 codedeploy 폴더와 index.html 파일을 생성 해 줍니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Sample Deployment</title>
<style>
body {
color: #ffffff;
background-color: #0188cc;
font-family: Arial, sans-serif;
font-size: 14px;
}
h1 {
font-size: 500%;
font-weight: normal;
margin-bottom: 0;
}
h2 {
font-size: 200%;
font-weight: normal;
margin-bottom: 0;
}
</style>
</head>
<body>
<div align="center">
<h1>Congratulations</h1>
<h2>This application was deployed using AWS CodeDeploy.</h2>
<p>For next steps, read the <a href="http://aws.amazon.com/documentation/codedeploy">AWS CodeDeploy Documentation</a>.</p>
</div>
</body>
</html>
appspec.yml 파일도 생성해서 코드를 넣어 줍니다.
version: 0.0
os: linux
files:
- source: /index.html
destination: /var/www/html/
hooks:
BeforeInstall:
- location: scripts/install_dependencies
timeout: 300
runas: root
- location: scripts/start_server
timeout: 300
runas: root
ApplicationStop:
- location: scripts/stop_server
timeout: 300
runas: root
scripts 디렉토리를 생성한 뒤 명령어로 세개의 파일을 생성해서 코드를 넣어 줍니다.
mkdir scripts
cd scripts
vi install_dependencies
#!/bin/bash
yum install -y httpd
vi start_server
#!/bin/bash
systemctl start httpd
vi stop_server
#!/bin/bash
isExistApp = `pgrep httpd`
if [[ -n $isExistApp ]]; then
systemctl stop httpd
fi
Codedeploy 를 압축파일로 생성 해 주고 확인 해 봅니다.
Aws s3 cp 명령어로 zip 파일을 s3 버킷으로 이동시켜주고 잘 들어갔는지 확인 해 줍니다.
4. CodeDeploy
Codedelpy 의 app 을 생성 해 줍니다.
App 의 이름을 적어주고 ec2/온프레미스 플랫폼으로 생성 해 줍니다.
App 내부 배포그룹을 생성하러 가 줍니다.
해당 이름을 설정 해 주고 미리 생성 해 놓은 codedeploy 의 역할을 지정 시킵니다.
환경설정도 마찬가지로 미리 생성해놓은 오토스케일링 그룹과 연결 시켜 줍니다.
로드밸런싱은 비활성화 해 주었습니다.
이제 본격적으로 배포를 생성 해 봅니다.
S3 에 보관해둔 압축파일을 통해 배포를 진행할 예정이기 때문에 주소와 타입을 잘 설정 해 둡니다.
배포가 완료 되었습니다.
로드밸런싱의 DNS 이름으로 주소에 접근 해 보겠습니다.
다음과 같이 APP 화면이 잘 보입니다.
+
Html 파일 수정 시 zip 파일을 삭제한 뒤 수정한 파일로
다시 zip 파일을 만들어서 똑같이 s3 에 배포하고 codedeploy 를 배포를 재시작 해주면 됩니다.
# 025) CodePipeline 사용하기
'AWS - KOR' 카테고리의 다른 글
# 025) AWS CodePipeline 사용하기 (0) | 2022.08.24 |
---|---|
# 023) AWS CodeBuild 사용하기 ( + S3 정적 웹사이트 ) (0) | 2022.08.24 |
# 022) AWS CodeCommit 사용하기 ( + Cloud9 ) (0) | 2022.08.24 |
# 021) 가상머신으로 쿠버네티스 (Kubernetes) 설치 2 (0) | 2022.08.01 |
# 020) AWS EC2 ( + Tomcat 서버 ) CI/CD 기초 (0) | 2022.07.31 |