AWS CodeDeploy 설정
- Jenkins gProxyServer – Operation
- 빌드 성공되면 AWS S3 버킷으로 결과물 업로드
- Deploy an application to AWS CodeP plugin 사용
- Deploy an application to AWS CodeDeply 설정값
- AWS CodeDeploy Application Name : gProxyServer-Operation
- AWS CodeDeploy Deployment Group : gp-gProxyServer-Operation
- AWS CodeDeploy Deployment Config : CodeDeployDefault.OneAtATime
- AWS Region : AP_NORTHEAST_2
- S3 Bucket : gproxyserver-opertaion
- Subdirectory : target/gProxyServer – 여기에 설정된 경로를 기준으로 아래 Include Files 를 가지고 온다.
- appspec.yml 파일은 / 경로에 존재해야 한다. 그걸 고려해서 path를 잡아야 한다.
- appspec.yml 파일은 / 경로에 존재해야 한다. 그걸 고려해서 path를 잡아야 한다.
- Include Files : **
- Deploy Revision(radio selected)
- Use Access/Secret keys – AWS AMI에 jenkins user 정보 등록
- AWS Access Key : AKIAIKPIIGRGYZE22XFA
- AWS Secret Key : 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
- Secret Key 정보는 생성시에면 조회 가능, 분실시 재생성하고 jenkins 옵션에서 Access Key, Scret Key 정보 수정 필요
- 빌드 및 S3까지는 정상적으로 처리 그러나 deploy 부분은 fail
- 원인은 아직 못 찾음
- jenkins 빌드 상태도 fail로 뜨기 때문에 콘솔 상태에서 build 상태와 S3로의 전송 로그를 확인 해야 한다.
- AWS S3
-
Bucket: gproxyserver-opertaion 사용
-
jenkins에서 빌드가 완료되면 gProxyServer – Operation-896214853180744560.zip 형식으로 zip 파일로 저장
확장자명 전에 숫자는 유니크 넘버인듯
-
- CodeDeploy
- 아마존 EC2 인스턴스 및 온프레미스에서 실행 중인 application 자동 배포 지원
- 준비
- EC2 인스턴스에서 S3에 접근하여 소스 다운을 위한 권한
- CodeDeploy 서브시 실행 권한
- 인스턴스에서 실행중인 Agent
- 소스의 배포 명세하는 appspec.yml
- IAM Role 생성
- EC2 인스턴스를 위한 Role
- Role을 생성하기 이전에 Policy를 먼저 생성한다.
- Create Policy > Create Your Own Policy 클릭
-
Name : CodeDeploy-EC2-Policy
Descriptions : Policy 설명을 적는다.
Policy Document :1
2
3
4
5
6
7
8
9
10
11{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
}
- Create Policy > Create Your Own Policy 클릭
-
Create New Role
-
Set Role Name : CodeDeply-EC2
Next Step 클릭 -
AWS Service Roles 탭 Amazon EC2 클릭
-
Attach Policy : CodeDeploy-EC2-Policy(상위에서 만든 Policy) 체크
Next Step 클릭 -
Review : 입력한 정보 확인 후 Create Role 클릭
-
- Role을 생성하기 이전에 Policy를 먼저 생성한다.
-
CodeDeploy를 위한 Role
-
Create New Role
-
Set Role Name : CodeDeploy-Service
Next Step 클릭 -
AWS Service Roles 탭 Amazon EC2 클릭
-
Attach Policy : AWSCodeDeployRole 체크
Next Step 클릭 -
Review : 입력한 정보 확인 후 Create Role 클릭
-
- 추가 설정
-
IAM > Roles : 상위에서 만든 CodeDeploy-Service 클릭
-
두번째 Trust Relationships 탭 선택 Edit Trust Relationship 클릭
-
Policy Document :
1
2
3
4
5
6
7
8
9
10
11
12
13{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "codedeploy.ap-northeast-2.amazonaws.com" // 환경에 맞는 resion 정보를 입력 해준다.
},
"Action": "sts:AssumeRole"
}
]
}
-
-
- EC2 인스턴스를 위한 Role
-
CodeDeploy Agent 설치
-
배포될 EC2 인스턴스에 CodeDeploy Agent 설치
-
1
2
3
4
5
6
7
8sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install ruby
sudo apt-get install wget
cd /home/ubuntu
wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
-
-
CodeDeploy 설치 상태 확인
-
1sudo service codedeploy-agent statu
-
-
-
배포 파일 준비
-
appspec.yml
-
AWS CodeDeploy 기본 배포 파일
-
해당 파일은 압축된 원본 파일의 가장 상위에 존재해야 한다.
-
1
2
3
4
5
6
7
8
9
10
11version: 0.0
os: linux
files:
- source: / // 배포될 소스 경로 지정(단일 파일 혹은 디렉토리 지정 가능)
destination: /opt/tomcat-8.5.6/webapps/gProxyServer // 인스턴스에 배포될 경로 지정
hooks:
BeforeInstall: // 소스가 배포되기 전에 실행할 스크립트
- location: scripts//stopTomcat.sh
AfterInstall: // 소스가 배포된 이후에 실행할 스크립트
- location: scripts/reStartTomcat.sh
timeout: 180
-
-
- 배포
- AWS-Console > CodeDeploy > Get Started Now > Custom Deployment > Skip Walkthrough
- Create New Application
- Application Name : gProxyServer-Operation
- Deployment Group Name : gp-gProxyServer-Operation
- Search by Tags : EC2 생성할때 입력한 tag 입력 Auto Scaling Group명 입력
- 해당 Tag 명으로 instance를 찾아서 deploy target을 잡는다.
- Service Role ARN : IAM에서 CodeDeploy를 위한 Role로 생성하였던 CdoeDeploy-Service Role 선택
- Create New Application
- Deploy New revision 생성
- Actions > Deploy new revision 클릭
- Application : CodeDeploy 설정할때 만들었던 Application Name
- Deployment Group : Application 설정된 Group 리스트가 보인다.
- Revision Location : S3://생성한 bucket-name/파일위치/파일명(zip, tar, tar.gz)
- Deployment Config : CodeDeployDefalut.OneAtTime(일반적인 설정 환경에 맞게 선택)
- Deploy Now 클릭
- 이슈
- 생성한 Deploy group으로 새롭게 생성된 S3 빌드 파일을 인식 못하는 버그가 있음
- Deploy Group 삭제 후 다시 생성할때 변경된 S3 파일 링크 정보를 입력하면 정상 작동
- AWS-Console > CodeDeploy > Get Started Now > Custom Deployment > Skip Walkthrough