다루는 내용
· CodeDeploy 이해
· IAM Role 생성
· CodeDeploy Agent 설치
· AppSpec 파일 생성
· CodeDeploy 배포
실습
CodeDeploy 이해
CodeDeploy는 아마존 EC2 인스턴스 및 온프레미스에서 실행 중인 인스턴스를 비롯한 모든 인스턴스에 어플리케이션 배포를 자동화 한다.
CodeDeploy를 사용하기 위해서는 몇가지 준비 사항이 필요하다.
EC2 인스턴스에서 S3에 접근하여 소스를 다운 받기 위한 권한
CodeDeploy 서비스가 실행되는데 필요한 권한
인스턴스에서 실행중인 Agent
소스의 배포를 명세하는 appspec.yml 파일
IAM Role 생성
EC2 인스턴스를 위한 IAM Role
1. 콘솔에서 IAM 클릭
2. 왼쪽 메뉴에서 Policies 클릭
3. Create Policy 클릭
4. Create Your Own Policy à Select 클릭
5. Review Policy 페이지에서
1) Policy Name : CodeDeploy-EC2-Policy 입력
2) Policy Document :
3) Create Policy 클릭
6. 왼쪽 메뉴에서 Roles 클릭
7.Create New Role 클릭
8.Set Role Name 페이지에서
1) Role Name : CodeDeploy-EC2 입력
2) Next Step 클릭
9. Select Role Type 페이지에서
1) AWS Service Roles à Amazon EC2 à Select 클릭
10. Attach Policy 페이지에서
1) CodeDeploy-EC2-Policy 선택
2) Next Step 클릭
11. Review 페이지에서
1) Create Role 클릭
CodeDeploy 서비스를 위한 IAM Role
1. Create New Role 클릭
2. Set Role Name 페이지에서
1) Role Name : CodeDeploy-Service 입력
2) Next Step 클릭
3. Select Role Type 페이지에서
1) Amazon EC2 à Select 클릭
4. Attach Policy 페이지에서
1) AWSCodeDeployRole 선택
2) Next Step 클릭
5. Review 페이지에서
1) Create Role 클릭
6. CodeDeploy-Service 롤 클릭
7. Edit Trust Relationship 클릭
8. Edit Trush Relationship 페이지에서
1) Policy Document
해당 IAM Role을 CodeDeploy 서비스가 사용할 수 있도록 Service 부분을 수정해준다. CodeDeploy의 ARN은 리전별로 다르므로 적절한 ARN으로 수정한다.
2) Update Trust Policy 클릭
CodeDeploy Agent 설치
인스턴스를 생성하면서 IAM Role 할당 및 CodeDeploy Agent 설치
1. 콘솔에서 EC2 클릭
2. Launch Instance 클릭
3. Step 1: Choose an Amazon Machine Image (AMI) 페이지에서
1) Amazon Linux AMI à Select 클릭
4. Step 2: Choose an Instance Type 페이지에서
1) Next: Configure Instance Details 클릭
5. Step 3: Configure Instance Details 페이지에서
1) IAM Role : CodeDeploy-EC2 선택
2) Advanced Details à User data :
User data에 Agent 설치 스크립트 입력
3) Next: Add Storage 클릭
6. Step 4: Add Storage 페이지에서
1) Next: Tag Instance 클릭
7. Step 5: Tag Instance 페이지에서
1) Value : CodeDeploy1 입력
2) Next: Configure Security Group 클릭
8. Step 6: Configure Security Group 페이지에서
1) SSH, HTTP allow 보안그룹 선택
2) Review and Launch 클릭
9. Step 7: Review Instance Launch 페이지에서
1) Launch 클릭
10. Select an existing key pair or create a new key pair 창에서
1) keypair 선택
2) Launch Instance 클릭
3) View Instances 클릭
AppSpec 파일 생성
소스 살펴 보기
1. index.html
index.html 파일 하나만 있은 웹 어플리케이션이다.
2. appspec.yml
CodeDeploy는 appspec.yml파일을 참조하여 소스를 배포한다.
1) version – AppSpec 파일의 버전. 어플리케이션의 버전이 아니다. 변경할 필요 없으며, 향후 CodeDeploy 서비스에서 사용하기 위해서 예정된 키워드이다. (현재는 의미 없음)
2) os – 인스턴스의 OS 명시
3) files :
source – 배포될 소스 경로 지정. (단일 파일 혹은 디렉토리 지정 가능)
destination – 인스턴스에 배포될 경로 지정.
4) hooks :
BeforeInstall – 소스가 배포되기 전에 실행할 스크립트
ApplicationStop – 어플리케이션 중지시 실행할 스크립트
3. script/install_dependencies
4. script/start_server
5. script/stop_server
· appspec.yml과 각 스크립트 파일들을 메모장(notepad)에서 작성한 경우 escape sequence에 의해 정상적으로 실행되지 않으므로 주의하자.
S3에 소스 업로드
1. CLI를 이용하여 업로드
.tar.gz 혹은 .zip 형태의 압축 파일을 S3 버킷에 업로드 한다.
CodeDeploy 배포
소스 살펴 보기
1. 콘솔에서 CodeDeploy 클릭
2. Get Started Now 클릭
3. Welcome to AWS CodeDeploy 페이지에서
1) Custom Deployment 선택
2) Skip Walkthrough 클릭
4. Create New Application 페이지에서
1) Application Name : CodeDeployDemo 입력
2) Deployment Group Name : CodeDeployGroup 입력
3) Search by Tags : 배포 대상 인스턴스 선택
CodeDeploy 서비스를 위한 IAM Role
4) Service Role ARN : CodeDeploy-Service IAM 롤 선택
5) Create Application 클릭
“CodeDeployDemo” CodeDeploy 어플리케이션 설정페이지에서
1) “CodeDeployGroup” CodeDeploy 그룹명 클릭하여 확장
Deploy New Revision 클릭
Create New Deployment 페이지에서
1) Application : CodeDeployDemo 선택
2) Deployment Group : CodeDeployGroup 선택
3) Revision Location : https://s3-us-west-2.amazonaws.com/arang-lab/codedeploy.tar.gz 입력 (S3에 업로드한 어플리케이션 소스의 URL)
4) Deploy Now 클릭
결과
정상적으로 배포되었다.
해당 서버 public로 접속하면 웹 어플리케이션이 실행된다.