[AWS] AWS CodeDeploy-CodePipeline을 통한 배포 자동화 해보기
간단한 자동화 배포 구축 해보기!
간단하게 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
로 접속을 해보면 위와 같이 자동 배포가 된 것을 볼 수 있습니다.