-
[AWS] AWS CodeDeploy-CodePipeline을 통한 배포 자동화 해보기Cloud/AWS 2021. 3. 30. 17:25728x90반응형
간단한 자동화 배포 구축 해보기!
간단하게
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 안에 있는 내용들만 사용해야 합니다. 어떤 말인지 아래에서 자세히 보겠습니다!위를 보시면
Test
는CodeCommit
에서 제가 만들었던 레포지토리 이름입니다. 해당 레포지토리를 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.yml
은CodeDeploy
를 실행하는데 중요한 역할을 하는 파일입니다. (띄어쓰기 오타 조심!!)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
위와 같이
CodeAgent
가 잘 작동 중인지 확인했을 때 위와 같이 나오면 잘 작동 중인 것입니다!CodeDeploy에서 애플리케이션 생성하기
위와 같이
CodeDeploy - 애플리케이션
을 들어간 후에애플리케이션 생성
을 누르겠습니다.위와 같이 적은 후에
애플리케이션 생성
버튼을 누르겠습니다.이번에는
배포 그룹
을 만들어야 합니다!서비스 역할
은 IAM 사용자에게 CodeDeploy 접근 권한을 주었던 것입니다!EC2 태그를 적어주어야
CodeDeploy
가 해당 EC2에게 전달해줄 수 있습니다. 그리고 밑에 설정은로그 밸런싱 활성화 부분을 체크 해제
한 후에 나머지는 default로 두고배포그룹 생성
을 누르겠습니다.CodePipeline 생성하기
위와 같이
파이프라인 생성
버튼을 누르겠습니다.위와 같이
파이프라인 이름
을 설정하고고급 설정
을 누르겠습니다.[고급 설정]에서는 아티팩트 저장소를 지정하는데,
[기본 위치]
를 선택할 경우 새로운 S3 버킷을 자동으로 생성해줍니다.[사용자 지정 위치]
를 선택할 경우 미리 만들어 놓은 버킷을 선택할 수 있습니다.
현재는 S3 버킷을 이미 만들어 놨기 때문에 [사용자 지정 위치]를 선택한 후 버킷 명을 선택하겠습니다. [암호화 키]는 [기본 AWS 관리형 키]를 선택한 후 다음으로 넘어갑니다.(이번 실습에서는 S3를 사용하지 않을 것이라 크게 중요하지 않을 거 같습니다.)
위와 같이
CodeCommit
에 있는 Repository와 연결한 후에master
브랜치로 선택을 하겠습니다.위와 같이
CodeBuild
는 사용하지 않을 것이기 때문에빌드 스테이지 건너뛰기
를 누르겠습니다. (빌드 공급자를 선택하지 않고 건너뛰기)위와 같이
CodeDeploy
에서 만들어줬던애플리케이션
,배포 그룹
을 선택한 후에다음 -> 파이프라인 생성
을 누르겠습니다.그러면 위와 같이
파이프라인
이CodeCommit
의 변경사항을 감지하고 위와 같이 자동으로 EC2까지 반영이 되어 작동하는 것을 볼 수 있습니다.그리고
EC2 IP
로 접속을 해보면 위와 같이 자동 배포가 된 것을 볼 수 있습니다.Reference
반응형'Cloud > AWS' 카테고리의 다른 글
[AWS] SpringBoot와 Docker를 사용하여 CI/CD 자동화 배포해보기 (0) 2021.04.03 [AWS] VPC(Virtual Private Cloud)란 무엇일까? (0) 2021.04.02 [AWS] AWS RDS 프리티어로 만들기 (0) 2021.03.29 [AWS] IAM 유저 생성 및 루트 계정 MFA 활성화 하는 법 (0) 2021.03.19 [AWS] EC2 프리티어로 인스턴스 생성하는 법! (0) 2021.03.05