본문 바로가기

AWS

[AWS] CodeDeploy (1/2)

 

앞선 포스트에서 CodeDeploy배포 자동화를 하기 위해 필요한 IAM을 설정하였습니다.

 

AWS CodeDeploy는 Amazon EC2 인스턴스 및 온프레미에서 실행 중인 인스턴스를 비롯하여 

모든 인스턴스에 대한 코드 배포를 자동화하는 서비스입니다.

CodeDeploy를 사용하면 배포 동안 가동 중지 시간을 줄이는데 도움이 되고, 복잡한 어플리케이션 업데이트 작업을 처리할 수 있습니다.

또한 오류가 발생하기 쉬운 수동 작업의 필요성이 없어지고 인프라에 따라

서비스가 확장되므로 많은 수의 인스턴스에 쉽게 배포가 가능해집니다.

 

이제 CodeDeploy로 배포할 수 있는 인스턴스가 되기 위해서는, 다음과 같은 조건을 만족해야 합니다.

1. 올바른 권한을 가진 역할이 필요

2. CodeDeploy Agent가 설치되어 있어야 함

3. 배포될 경로에 파일이 없어야 함

 

CodeDeploy Agent란 배포를 진행할 EC2 인스턴스에 설치되어 CodeDeploy의 명령을 기다리는 프로그램입니다.

CodeDeploy로 배포를 진행하려면 EC2에 반드시 CodeDeploy Agent가 설치되어 있어야 합니다.

CodeDeploy Agent는 CodeDeploy와 통신을 하다가 배포를 진행하라는 명령을 받으면,

AppSpec.yaml 파일에 있는 절차에 맞추어 배포를 진행합니다.

 

AppSpec.yaml 파일은 배포를 어떻게 진행할지를 적어둔 명세서 파일입니다.

레파지토리에서 받은 코드를 서버 내의 어떤 디렉토리로 옮길지부터

배포에 필요한 다양한 설정들을 제공하줍니다.

(docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)

 

이를 실행하기 위해 기존에 만들었던 인스턴스를 다시 시작하고 ssh 접속을 해줍니다.

그리고 이전에 만든 파일인 test.html이 있는 폴더로 이동한 후, 기존 파일을 삭제해줍니다.

1. cd /var/www/

   rm test.html

 

2. 해당 폴더에 CodeDeploy Agent를 설치해줍니다.

    wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install

    chmod +x ./install

    sudo ./install auto

    sudo service codedeploy-agent status

 

3. 설치가 완료됐다면 AMI를 생성하기 위해서 인스턴스를 종료합니다.

    sudo shutdown -h now

 

4. 해당 인스턴스로 AMI를 생성해줍니다. (우클릭 후 이미지 생성)

 

5, AMI를 메뉴를 클릭하여 해당 AMI ID를 복사해준 후, 시작 템플릿 생성을 눌러줍니다.

 

6. 기존에 생성했던 템플릿을 원본 템플릿으로 설정하여, 기존 설정들은 그대로 유지하되 AMI는 새로 생성한 AMI로 설정을 해줍니다.

    이를 통해 보안 그룹, 키 페어 등을 별도로 다시 지정해주지 않아도 됩니다.

 

 

7.  다음으로 고급 세부 정보를 클릭하여 IAM 인스턴스 프로프파일을 설정해줍니다.

     이 템플릿으로 생성된 인스턴스들은 해당 역할을 가지고 시작하게 됩니다.

     그 후 템플릿을 생성해줍니다.

 

8. 다음으로 Auto Scaling Group으로 들어가서 시작 템플릿을 방금 생성한 템플릿으로 설정해주고,

    3개의 인스턴스에 배포를 하기 위해 목표 용량과 최소, 최대를 모두 3으로 바꾸어 줍니다.

 

 

9. 총 3개의 인스턴스가 생성이 된 것을 확인할 수 있습니다.

 

'AWS' 카테고리의 다른 글

[AWS] CloudWatch  (0) 2020.07.12
[AWS] CodeDeploy (2/2)  (0) 2020.07.11
[AWS] IAM  (0) 2020.07.10
[AWS] Route 53, HTTPS, SSL/TLS, Certificate Manager  (0) 2020.07.09
[AWS] Elastic Load Balancer  (0) 2020.07.07