ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] AWS CodeDeploy-CodePipeline을 통한 배포 자동화 해보기
    Cloud/AWS 2021. 3. 30. 17:25
    728x90
    반응형

    간단한 자동화 배포 구축 해보기!

    간단하게 CodeCommit, CodeDeploy, EC2 linux2, Apache를 이용하여 CI/CD 파이프라인을 구축하는 법에 대해서 알아보겠습니다.

     

    CodeCommit 레포지토리 생성하기

     

    위의 링크를 참고해서 CodeCommit 레포지토리를 만든 후에 로컬 PC에다 clone 받는 작업까지 해보겠습니다.

    여기 에서 2단계를 보면 파일을 다운 받을 수 있는 곳이 있습니다.(SampleApp_Linux.zip으로 )

    /tmp
       └-- MyDemoRepo
           │-- appspec.yml
           │-- index.html
           │-- LICENSE.txt
           └-- scripts
               │-- install_dependencies
               │-- start_server
               └-- stop_server

    다운 받은 레포지토리는 위와 같은 구조로 되어 있습니다. 여기서! 주의할 점은 MyDemoRepo를 포함하면 안됩니다! 즉 MyDemoRepo 안에 있는 내용들만 사용해야 합니다. 어떤 말인지 아래에서 자세히 보겠습니다!

     

    스크린샷 2021-03-22 오후 3 22 14

    위를 보시면 TestCodeCommit에서 제가 만들었던 레포지토리 이름입니다. 해당 레포지토리를 Local로 clone 받은 상태에서 위에서 다운 받은 파일을 해당 레포지토리 안에다 위와 같이 넣었습니다.


    즉, MyDemoRepo를 포함하지 않고 내부 내용들을 Test 레포지토리 안에 넣은 것을 볼 수 있습니다.

    git add .
    git status
    git commit -m "커밋메세지"
    git push origin master

    위와 같이 CodeCommit에 push를 해보겠습니다.

     

     

    중요한 부분!

    위에서 중요한 파일은 scripts 디렉토리, appsepc.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
    

    appspec.ymlCodeDeploy를 실행하는데 중요한 역할을 하는 파일입니다. (띄어쓰기 오타 조심!!)

    • source: 실행할 소스가 파일 위치 or 위치를 적어주어야 합니다.
    • destination: /var/www/html => EC2에서 소스파일이 도착할 위치

     

     

    scripts 디렉토리

    scripts 디렉토리 아래에는 install_dependencies.sh, start_server.sh, stop_server.sh 3개의 파일이 존재합니다.

    • install_install_dependencies.sh
    yum install -y httpd   # (웹 서버 설치) => BeforeInstall 단계에서 설치해라 라는 뜻
    • start_server.sh
    service httpd start   # 웹 서버 구동 => BeforeInstall 단계에서 설치해라 라는 뜻
    • stop_server.sh
    service httpd stop  # 웹 서버 중지

    이렇게 배포하는 단계에서 실행해야 할 명령어들을 스크립트 파일로 작성한 것입니다.

     

     

     

    EC2 Linux2 인스턴스에 CodeAgent 설치하기

    sudo yum install -y aws-cli
    cd /home/ec2-user/ 
    sudo aws configure 
    wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
    chmod +x ./install
    sudo ./install auto
    sudo service codedeploy-agent status

    위와 같이 차례대로 설치를 하겠습니다.

     

     

     

    CodeAgent 상태 확인

    sudo service codedeploy-agent status

    스크린샷 2021-03-22 오후 3 27 38

    위와 같이 CodeAgent가 잘 작동 중인지 확인했을 때 위와 같이 나오면 잘 작동 중인 것입니다!

     

     

     

    CodeDeploy에서 애플리케이션 생성하기

    스크린샷 2021-03-22 오후 3 30 32

    위와 같이 CodeDeploy - 애플리케이션을 들어간 후에 애플리케이션 생성을 누르겠습니다.

     

     

    스크린샷 2021-03-22 오후 3 32 25

    위와 같이 적은 후에 애플리케이션 생성 버튼을 누르겠습니다.

     

     

    스크린샷 2021-03-22 오후 3 34 39

    이번에는 배포 그룹을 만들어야 합니다!

     

     

    스크린샷 2021-03-22 오후 3 36 08

    서비스 역할은 IAM 사용자에게 CodeDeploy 접근 권한을 주었던 것입니다! 

     

     

    스크린샷 2021-03-22 오후 3 43 36

    EC2 태그를 적어주어야 CodeDeploy가 해당 EC2에게 전달해줄 수 있습니다. 그리고 밑에 설정은 로그 밸런싱 활성화 부분을 체크 해제 한 후에 나머지는 default로 두고 배포그룹 생성을 누르겠습니다.

     

     

     

    CodePipeline 생성하기

    스크린샷 2021-03-19 오후 5 34 39

    위와 같이 파이프라인 생성 버튼을 누르겠습니다.

     

     

    스크린샷 2021-03-19 오후 5 35 56

    위와 같이 파이프라인 이름을 설정하고 고급 설정을 누르겠습니다.

     

     

    스크린샷 2021-03-19 오후 5 37 20

    [고급 설정]에서는 아티팩트 저장소를 지정하는데,

    • [기본 위치]를 선택할 경우 새로운 S3 버킷을 자동으로 생성해줍니다.
    • [사용자 지정 위치]를 선택할 경우 미리 만들어 놓은 버킷을 선택할 수 있습니다.

     

    현재는 S3 버킷을 이미 만들어 놨기 때문에 [사용자 지정 위치]를 선택한 후 버킷 명을 선택하겠습니다. [암호화 키]는 [기본 AWS 관리형 키]를 선택한 후 다음으로 넘어갑니다.(이번 실습에서는 S3를 사용하지 않을 것이라 크게 중요하지 않을 거 같습니다.)

    스크린샷 2021-03-19 오후 5 39 10

    위와 같이 CodeCommit에 있는 Repository와 연결한 후에 master 브랜치로 선택을 하겠습니다.

     

     

    스크린샷 2021-03-22 오후 4 01 02

    위와 같이 CodeBuild는 사용하지 않을 것이기 때문에 빌드 스테이지 건너뛰기를 누르겠습니다. (빌드 공급자를 선택하지 않고 건너뛰기)

     

     

    스크린샷 2021-03-22 오후 4 11 49

    위와 같이 CodeDeploy에서 만들어줬던 애플리케이션, 배포 그룹을 선택한 후에 다음 -> 파이프라인 생성을 누르겠습니다.

     

    스크린샷 2021-03-22 오후 4 14 33

     

    그러면 위와 같이 파이프라인CodeCommit의 변경사항을 감지하고 위와 같이 자동으로 EC2까지 반영이 되어 작동하는 것을 볼 수 있습니다.

     

     

    test

    그리고 EC2 IP로 접속을 해보면 위와 같이 자동 배포가 된 것을 볼 수 있습니다.

     

     

     

    Reference

    반응형

    댓글

Designed by Tistory.