티스토리 뷰

devops

github action으로 ec2에 자동배포하기2

안양사람 2021. 10. 18. 21:27
728x90
SMALL

지난 글에서는 깃헙액션, 워크플로우에 대해 알아보았다. 이번에는 aws 관련 설정들을 알아보겠다.

그전에 먼저 대략적인 흐름을 설명하겠다. 원래 배포를 할때는 ec2를 생성하고 기본 우분투 설정, npm, nodejs, db설치를 한 뒤, git clone을 하고 env파일 설정, npm install, npm start, service nginx start등의 명령어 몇개로 서비스를 배포하고 git pull을 통해 앞선 작업들을 비슷하게 반복하고 필요하다면 pm2 등을 이용해 무중단 배포를 한다. 이건 가장 기본적인 흐름이다. 그리고 조금더 발전된 것이 크론탭을 이용한 자동배포다. 크론탭을 이용한 자동배포는 어렵지 않으니 모른다면 한번쯤 보고 넘어가자. 

https://ms3864.tistory.com/376

 

리눅스(우분투) 자동 배포하기(aws ec2)

 리눅스에서는 원하는 시간마다 특정 명령어를 실행할 수 있게 해주는 크론탭이라는게 존재한다. 이를 이용해서 git에서 pull을 받아오고 만약 받아왔다면 자동으로 받아오고 배포를 할 수 있다.

ms3864.tistory.com

깃헙액션에서는 s3와 codedeploy, ec2를 이용한다. 간단하게 말해서 s3에 파일을 압축해서 올리고 codedeploy를 이용해 ec2에 뿌려주는 것이다.

 

1. EC2 생성

먼저 인스턴스를 생성하자. 당연하지만... 잘 모른다면 아래글을 읽어보자

https://ms3864.tistory.com/372

 

aws ec2 기본 설정 및 npm설치, mysql 연결하기

이전에도 글을 썼는데 뭔가 좀 애매해서 처음부터 다시 글을 써볼려고 한다. 이번에도 배포하다가 오류가 나서 몇시간을 날려먹은지 모르겠다. 진짜... 개빡.....친다 이런일이 발생하지 않게 상

ms3864.tistory.com

 

2. S3 생성

그냥 S3 버킷들어가서 생성하면 된다. 퍼블릭 설정이라던가 그런것들을 안하기 때문에 진짜 그냥 만들면 끝이다. 버킷 이름만 신경써서 지어주자. 이건 필요하니까

 

3. EC2에 Codedeploy 에이전트 설치

사실 아래 링크를 보고 따라하면 된다. 그래도 편의상 코드를 적어두겠다. 참고로 내 우분투는 20버전이다

sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
wget https://bucket-name.s3.region-identifier.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto > /tmp/logfile

# 실행중인지 확인
sudo service codedeploy-agent status
# CodeDeploy 에이전트가 설치되어 실행 중이면 과 같은 메시지가 표시되어야 합니다.The AWS CodeDeploy agent is running.

# error: No AWS CodeDeploy agent running과 같은 메시지가 표시되면 서비스를 시작하고 다음 두 명령을 한 번에 하나씩 실행
sudo service codedeploy-agent start
sudo service codedeploy-agent status

 

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html

 

우분투 서버용 CodeDeploy 에이전트 설치 - AWS CodeDeploy

출력을 임시 로그 파일에 쓰는 것은 알려진 버그를 해결하는 동안 사용해야하는 해결 방법입니다.install스크립트를 사용할 수 있습니다.

docs.aws.amazon.com

 

4. EC2 IAM 설정

ec2가 s3와 codedeploy를 이용할 수 있도록 권한 설정을 해줘야 한다. 아래 링크를 들어가서 하면 된다.

https://console.aws.amazon.com/iamv2/home#/roles

 

https://console.aws.amazon.com/iamv2/home#/roles

 

console.aws.amazon.com

IAM - 액세스 관리 - 역할 - 역할 만들기

AWS 서비스 - EC2 - 다음

1. AWSCodeDeployFullAccess

2. AmazonS3FullAccess

두 개의 권한 체크

다음에 태그는 안적어도 된다. 나는 안적었다. 마지막으로 역할이름을 적고 역할을 만들면 된다.

 

이제 IAM을 EC2에 연결하면 된다.

 

5. CodeDeploy IAM 설정

위와 비슷하게 IAM을 하나 더 만들어준다.

그대로 다음

이번에도 태그는 넘기고 이름만 잘 적어주자

 

5. CodeDeploy 어플리케이션 생성

이름만 정하고 EC2만 선택하면 간단하게 애플리케이션 생성

이제 배포그룹을 생성하자

서비스 역할에는 아까 만든 EC2 IAM을 입력하면 된다.(자동완성된다 ㅎㅎ)

Amazon EC2 인스턴스를 선택하고 태그에 Name, 값에 아까 만든 EC2 인스턴스 Name을 입력한다.

배포구성은 그대로 두면 되고 로드밸런싱 활성화를 취소한다.

 

6. AWS IAM 사용자 추가

이제 깃헙 액션이 s3에 접근하여 파일을 업로드할 수 있도록 IAM 사용자 추가 및 권한 설정을 한다.

https://console.aws.amazon.com/iamv2/home#/users

 

https://console.aws.amazon.com/iamv2/home#/users

 

console.aws.amazon.com

아까는 역할이고 이번에는 사용자다.

액세스 키 -프로그래밍 방식 액세스를 선택하자

기존 정책 직접 연결에서 아까 선택한것처럼

1. AWSCodeDeployFullAccess

2. AmazonS3FullAccess

두 개의 권한 체크

이렇게 생성하면 Access key ID, Secret access key가 나오고 를 csv파일로 저장할 수 있다.

 

너무 글이 길어졌다... 다음글에서...

 

 

 

참조글

https://namunamu1105.medium.com/github-actions%EB%A1%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EC%9E%90%EB%8F%99%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-s3-ec2-code-deploy-centos-nginx-react-js-e6f54a6e69bc

 

728x90
LIST
댓글
공지사항