필요 요소 구성
📌 1. EC2 인스턴스
- ubuntu로 아키텍쳐 64비트, t2.micero 프리티어 서버가 하나 있어서 그걸 사용
(아래 포스팅 때 만들걸 사용)
📍 다만, EC2에 태그 설정이 되어있지 않다면 추가적으로 태그 설정 처리
📌 2. 키 페어
- EC2 생성할때 만든거 가지고 있어서 그걸 사용
📌 3. IAM 사용자 생성
AWS에서 IAM를 검색
검색 아래에 작은 이모티콘은 검색에서 즐겨찾기 해놓은 것. 없다면 검색해서 찾자.
권한 정책에서
- AmazonEC2FullAccess
- AmazonS3FullAccess
- AWSCodeDeployFullAccess
세개를 조회해 체크하고 다음을 누른다
추가한 3가지 확인한 다음 사용자 생성 클릭
📌 4. IAM 액세스 키 생성
************* 액세스 키는 생성하면 그 순간에만 볼 수 있고 다운받을 수 있다. 다운받아 잘 보관해두자.
📌 5. IAM 역할 생성 - EC2 용
📍 1단계
📍 2단계
- AmazoneS3FullAccess
- AWSCodeDeployFullAccess
검색해서 체크
📍3단계
역할 이름 설정과 추가한 권한만 체크하고 역할 생성
📍 EC2 인스턴스 가서 IAM 설정
작업 > 보안 > IAM 역할 수정
📌 6. IAM 역할 생성 - Code Deploy 용
역할을 한개 더 생성해야 한다.
사용사례와 이름만 설정하고 역할 생성 클릭
📌 7. EC2 셋팅
EC2 접속!
📍 home/ubuntu/ 위치에 app폴더 생성
📍 apt 업데이트하고 패키지들 설치
- 1) apt 업데이트 apt은 ubuntu 패키지 관리 툴
- 2) ruby-full 설치 : 프로그래밍 언어인 ruby를 설치 (중간에 설치를 계속할껀지 물음 / 중간에 보라색화면 나오면 선택사항이 하나인 화면은 Enter 넘어가고 뒤에 뭔가 여러가지 사항이 나오는 화면은 tap을 이용해 ok로 이동해서 enter누르면 이미 자동으로 선택된 사항에 대해서 적용해 재시작한다.)
- 3) wget 설치 : HTTP/FTP를 사용해서 서버에서 파일을 내려받기 위한 오픈소스
sudo apt update
sudo apt install ruby-full
sudo apt install wget
**** 참고: 이후 작업이 apt으로 안되서 dpkg(데비안 패키지)로 설치
📍 Code Deploy Agent 다운
- 1) wget 사용해 Codedeloy서버 URL에서 codedeploy-agent_1.3.2-1902_all.deb 을 다운
(dep은 우분투에서 파일 패키지 프로그램으로 설치가 가능한 파일, 저 Url은 각자 주소 아니고 설치 파일받는 공통주소인데 아시아 태평양(서울) 지역 기준 )
- 2) 폴더 하나를 생성
- 3) dpkg-deb은 deb파일을 명시한 폴더에 파일시스템 트리 그대로 풀어둔다.
(-R 옵션은 --recursive 옵션과 동일한 것으로 단어 뜻은 재귀를 의미한다. 이 옵션은 앞의 명령어를 해당 디렉토리 뿐만 아니라 그 디렉토리에 포함된 하위 디렉토리에도 모두 적용시키는 옵션이다)
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
mkdir codedeploy-agent_1.3.2-1902_ubuntu22
dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22
📍 루비 3.0으로 사용할 수 있게 dep파일 dependency 수정해서 빌드하고 설치
- 1) sed : Stream Editor의 약자로 명령어로 원본 텍스트 파일을 편집하는 명령어. 맨 뒤에 지정한 파일을 가져와 앞에 ''(작은따옴표) 안의 내용으로 수정하여 -i 옵션을 통해 수정을 반영한다. (디펜던시를 수정해 ruby 3.0으로 적용)
- 2) -b는 --build와 똑같은 옵션으로 지정한 폴더를 deb 패키지로 빌드한다.
- 3) 지정한 deb파일을 설치 (-i 옵션은 인스톨 옵션)
sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
sudo dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb
📍 확인
- 1) 서비스 목록 중 타입이 service이면서 codedeploy가 포함된 목록을 조회
( systemctl는 systemd(system daemon)을 관리하는 명령어
list-units은 서비스 목록 보는 명령어로 뒤에 붙는 옵션으로 필터링해서 조회가 가능하다 )
- 2) codedeploy-agent의 상태를 조회한다.
(service 명령어는 등록된 서비스를 관리하는 명령어로 service [서비스명] 에 start / stop / restart / status 등의 옵션을 더해 시작, 중지, 재시작, 상태조회를 할 수 있다.)
systemctl list-units --type=service | grep codedeploy
sudo service codedeploy-agent status
위와 같이 상태를 확인 할 수 있게 됬다면 성공!
트러블슈팅 : apt으로 하는 방법이 아래와 같은 문제가 생겨 apt으로 진행하다가 문제가 생겨 dpkg로 진행. 아래 더보기글 내용은 이런일이 있었다~ 참고만 하세요-
📍 code deploy 설치 파일을 해당 url에서 다운 받음
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
📍install 폴더에서
- 1) install 폴더의 권한을 변경
- 2) 해당 폴더를 자동을 실행시켜 설치 진행
chmod +x ./install
sudo ./install auto
에러....
앗, Ruby version이 지금 3.0.2인데 필요한건 2.x 이라고 ㅠ
해결하는 방법은 EC2 인스턴스 자체를 낮추거나, 파일을 수정해서 Ruby 3.0을 쓸 수 있게 하는 방법 이 있는데
나는 후자를 선택
📌 8. 올릴 프로젝트에 맞는 환경 설정
프로젝트가 JDK 11버전을 사용하므로 11버젼 설치 및 확인
sudo apt-get install openjdk-11-jdk
java -version
📌 9. CodeDeploy
AWS에서 CodeDeploy를 검색
AWS 서비스를 사용할 때는 항상 서버가 서울인지 확인!! 안그럼 일 2번해야
📍 배포 > 애플리케이션 > 애플리케이션 생성
📍 배포 그룹 생성
+ 마지막에 로드 밸런서에 대한 선택할 수 있는 요소가 없어서 활성화 체크를 해제. 나중에 문제가 생기면 다시 수정
배포 그룹 생성 클릭하여 생성!
AWS에서 CD에 필요한 환경 설정은 여기까지고 다음 글 부터 github에 적용하는 방법과 프로젝트에 추가할 파일에 대해 정리.
참조 자료 (아영님 고마워요):
'DevOps > CI & CD' 카테고리의 다른 글
CI/CD] 자동 배포 관련 다양한 상태 확인 방법 (0) | 2023.01.26 |
---|---|
CI/CD] Properties 관리 (1) | 2023.01.26 |
CI/CD] CodeDeploy - 적용 과정 (1) | 2023.01.24 |
CI/CD] Github Actions CI (0) | 2023.01.20 |