The flow of a typical AWS CodeDeploy deployment
- 설정 목록
EC2 On-Premises(EC2가 아닌 물리서버) CodeDeploy 서비스용 IAM 권한 생성 서버용 IAM 권한 생성 CodeDeploy Application 생성 EC2 설정 CodeDeploy Agent 설치/설정 On-Premise 서버 설정 배포 파일 준비, appspec.yml 설정 [반복] 배포 [반복] - CodeDeploy 서비스용 IAM 권한 생성
- [AWS-Console] IAM > Roles : Create New Role
- Role Type : AWS CodeDeploy
- Attach Policy : AWSCodeDeployRole
- [AWS-Console] IAM > Roles : Create New Role
- 서버용 IAM 권한 생성
- [AWS-Console] IAM > Policies : Create Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "*", "arn:aws:s3:::my_source_bucket_name/*" ] } ] }
- [AWS-Console] IAM > Roles : Create New Role
- Role Type : AWS EC2
- Attach Policy : 위 Policy를 선택
- [AWS-Console] IAM > Policies : Create Policy
- CodeDeploy Application 생성
- [AWS-Console] CodeDeploy > Create New Application
- Service Role : 위 ‘서비스용 IAM 권한 생성’ 단계에서 생성한 IAM Role를 지정
- EC2 설정 (EC2 서버 전용)
- [AWS-Console] EC2> Launch Instance : Launch Instance
- IAM role : 위 ‘서버용 IAM 권한 생성’ 단계에서 생성한 IAM Role를 지정
- 배포를 받는 모든 서버 인스턴스에 적용
- [AWS-Console] EC2> Launch Instance : Launch Instance
- CodeDeploy Agent 설치/설정
- 배포를 받는 모든 서버에 설치
- Download Installer & Install
# Linux wget https://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/latest/install chmod +x ./install ./install auto
# Windows if not exist "c:\temp" mkdir c:\temp powershell.exe -Command Read-S3Object -BucketName bucket-name -Key latest/codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi c:\temp\codedeploy-agent.msi /quiet /l c:\temp\host-agent-install-log.txt
또는 VERSION 파일을 참고로 수동 다운로드 & 설치
- Launch Service (OS에 따라 상이함)
RedHat> service codedeploy-agent start SUSE> systemctl start codedeploy-agent.service Windows> powershell.exe -Command Get-Service -Name codedeployagent
- 참고
- On-Premise 서버 설정 (On-Premise 서버 전용)
- Create IAM account
- [AWS-Console] IAM > Users : Create New Users
- Generate an access key for each user : on
-
Access Key ID 와 Secret Access Key 를 메모
- Permissions 에서 위의 ‘서버용 IAM 권한’단계에서 생성한 Policy를 추가
- CodeDeploy Agent 설정
- Linux : /etc/codedeploy-agent/conf/codedeploy.onpremises.yml
- Windows : C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml
-
--- aws_access_key_id: secret-key-id aws_secret_access_key: secret-access-key iam_user_arn: IAM-user-ARN region: supported-region
- CodeDeploy Agent 서비스 재시작
- 참고 : Configure an On-Premises Instance to Work with AWS CodeDeploy
- Create IAM account
- 배포 파일 준비
- appspec.yml 생성
version: 0.0 os: linux files: - source: ./www/ destination: /home/www/ permissions: - object: /home/www/*/webapps pattern: "*" owner: root group: admin mode: 775 type: - directory - object: /home/www/*/webapps pattern: "*" owner: root group: admin mode: 664 type: - file hooks: AfterInstall: - location: scripts/owner-reset.sh timeout: 30 runas: root - location: scripts/reload-httpd.sh timeout: 30 runas: root
- 위 appspec.yml 파일을 포함하여 소스를 zip 또는 tar, tar.gz 로 압축하여, 위의 서버용 IAM 권한이 지정된 S3에 업로드
- appspec.yml 생성
- 배포
- [AWS-Console] CodeDeploy > Deployments : Create New Deployment
- Application : 위의 ‘CodeDeploy Application 생성’ 에서 생성한 Application
- Deployment Group : 위의 ‘CodeDeploy Application 생성’ 에서 생성한 Deployment Group
- Revision Type : Amazon S3
- Revision Location : 위에서 업로드 한 zip 또는 tar, tar.gz 파일의 URL
- Deployment Config : CodeDeployDefault.OneAtTime (일반적인 설정, 환경에 맞게 선택)
- Deploy Now
- [AWS-Console] CodeDeploy > Deployments : Create New Deployment
♦ References
http://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/welcome.html
http://blog.gsclip.com/2015/09/codedeploy-%EC%9D%B4%ED%95%B4/