AWS의 배포 시스템인 CodeDeploy를 이용하기 전에 배포 대상인 EC2가 CodeDeploy를 연동 받을 수 있게 IAM 역할을 하나 생성하겠습니다.
-
역할
- AWS 서비스에만 할당할 수 있는 권한
- EC2, CodeDeploy
-
사용자
- AWS 서비스 외에 사용할 수 있는 권한
- 로컬 PC, IDC 서버 등
태그는 원하는 이름으로 지으면 됩니다.
이렇게 만든 역할을 EC2 서비스에 등록하겠습니다. 다시 EC2 인스턴스 목록으로 가겠습니다.
그리고 위와 같이 EC2를 재부팅 하겠습니다.
sudo apt install awscli
aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2
위와 같이 입력하면 download가 잘 되는 것을 알 수 있습니다.
install 파일에 실행 권한이 없으니 실행 권한을 추가한다.
chmod +x ./install
install 파일로 설치를 진행한다.
sudo ./install auto // sudo ./install auto > /tmp/logfile
위의 명령어가 /usr/bin/env: ruby: No such file or directory 이게 뜨면서 안된다면
sudo apt-get install ruby 설치를 진행하고 해보자.
설치가 끝났으면 Agent가 정상적으로 실행되고 있는지 상태 검사를 한다.
sudo service codedeploy-agent status
다음과 같이 running 메세지가 출력되면 정상이다.
The AWS CodeDeploy agent is running as PID xxx
// 참고: https://stackoverflow.com/questions/62286857/aws-codedeploy-agenten-on-ubuntu-20-0lts-ruby-errors
CodeDeploydptj EC2에 접근하려면 마찬가지로 권한이 필요합니다. AWS의 서비스이니 IAM 역할을 생성합니다.
위와 같이 하나 밖에 없기 때문에 다음
을 누르고 넘어갑니다.
배포 구성이란 한번 배포할 떄 몇 대의 서버에 배포할지를 결정합니다.
EC2에 접속해서 디렉토리를 만들어 줍니다.
mkdir app
cd app
mkdir step2
cd step2
mkdir zip
Travis CI의 Build가 끝나면 S3에 zip 파일이 전송되고, 이 zip 파일은 /home/ubuntu/app/step2/zip 으로 복사되어 압축을 풀 예정입니다.
Travis CI의 설정은 .traivis.yml
로 진행했습니다. AWS CodeDeploy
의 설정은 appspec.yml
로 진행합니다.
version: 0.0
os: ubuntu
files:
- source:
destination: /home/ubuntu/app/step2/zip
overwrite: yes
appspec.yml
에 위의 코드를 적어줍니다.