2023. 7. 4. 04:31ㆍ배포
https://brilliantdevelop.tistory.com/170에 이어 Travis CI, S3에 CodeDeploy까지 연동하는걸 목표로,
Travis CI, S3, CodeDeploy가 서로 연동 될 수 있도록 설정을 하겠습니다.
EC2에 IAM 역할 추가하기
EC2가 CodeDeploy를 연동 받을 수 있게 IAM역할을 추가합니다.
이전 글에서 만든 IAM의 사용자와 지금부터 만들IAM의 역할은 다음과 같은 차이가 있다.
사용자
- AWS 서비스 외에 사용할 수 있는 권한
- 로컬PC,IDC 서버 등
역할
- AWS 서비스에서만 할당할 수 있는 권한
- EC2, CodeDeploy,SQS 등
지금 만들 권한은 EC2에서 사용할 것이기 때문에 역할로 처리합니다.
검색창에 IAM 검색 - 역할 - 역할만들기 순으로 진행합니다.
AWS서비스의 EC2를 선택합니다
다음 권한 정책에선 EC2RoleForAWS를 검색해 AmazonEc2RoleForAWS-codeDeploy를 선택합니다.
역할의 이름을 추가하고 태그도 추가합니다. (태그의 이름은 역시 ch로 합니다.)
이렇게 역할을 만들었으면 이 역할을 EC2에 추가해줍니다.
EC2의 인스턴스 목록에서 내 인스턴스 우클릭-보안-IAM 역할 수정 탭을 클릭합니다.
방금 IAM에서 만든 역할을 선택한 후 업데이트 버튼을 클릭합니다.
이후 인스턴스를 재부팅 해줍니다.
이렇게 해서 내 EC2 인스턴스에
AmazonEc2RoleForAWS-CodeDeploy 정책이 선택된 역할이 추가가 되었습니다.
이로써 EC2는 CodeDeploy를 연동 받을 수 있는 역할을 얻게 되었습니다.
EC2에 CodeDeploy Agent설치
EC2에서 CodeDeploy의 요청(연동)을 받을 수 있게 Agent를 설치합니다.
Ec2에 접속해 다음 명령어를 입력합니다.
aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2
chmod +x ./install
sudo yum install ruby
sudo ./install auto
설치가 끝나고 Agent가 정상적으로 실행되고 있는지 상태 검사를 합니다.
sudo service codedeploy-agent status
다음과 같이 running as PID xxxx 메시지가 뜨면 정상입니다.
EC2설정에서 CodeDeploy를 연동받을 수 있게 설정했고,
실제 EC2에 CodeDeploy를 설치함으로서 EC2에서의 준비는 끝났습니다.
이제 CodeDeploy를 준비합시다.
CodeDeploy를 위한 권한생성
EC2가 CodeDeploy를 연동받을 수 있는 권한설정(IAM역할)을 했던것처럼
CodeDeploy 또한 EC2에 접근할 수 있는 권한설정을 해야됩니다.
CodeDeploy도 AWS의 서비스이니 IAM 역할을 생성합니다.
검색창에 IAM 검색 - 역할 - 역할만들기 순으로 진행합니다.
다음과 같이 AWS 서비스- CodeDeploy를 차례로 선택합니다.
CodeDeploy에서는 권한이 1개뿐임으로 바로 다음으로 넘어갑니다.
다음과 같이 이름과 태그를 추가합니다. (태그 key 값은 ch)
이렇게 역할을 만들면 목록에 다음과 같이 있는 걸 확인할 수 있습니다.
(이번에 만든건 chcodedeploy-role, 위에서 만든게 chec2-codedeploy-role)
이제 IAM에서의 역할을 만들었으니 이 역할을 사용할 codeDeploy를 만들겠습니다.
CodeDeploy 생성
서비스를 배포하는데 필요한 3가지 요소는 다음과 같습니다.
- 프로젝트 저장소
- 빌드 툴
- 배포
프로젝트 저장소는 Github, 빌드 툴은 Travis CI이고 배포를 바로 이 CodeDeploy가 합니다.
CodeDeploy를 생성해 보겠습니다.
CodeDeploy를 검색한 후 애플리케이션 탭- 애플리케이션 생성을 클릭합니다.
이름은 ch, 컴퓨팅플랫폼은 EC2/온프레미스를 선택합니다.
애플리케이션 생성 후 배포그룹을 생성합니다.
배포그룹의 이름을 정하고,
서비스 역할을 선택합니다. 아까 IAM에서 만든 chcodeDeploy-role을 선택합니다.
배포 유형은 현재위치를 선택합니다. 만약 배포할 서비스가 2대 이상이라면 블루/그린을 선택합니다.
환경구성은 Amazon EC2 인스턴스를선택하고 태그도 ch로 만듭니다.
배포 설정의 배포구성은 AllAtOnce를 선택합니다.
배포할 서버가 여러대라면 1대씩 배포할지, 30% 씩 동시에 배포할지 등등을 선택합니다만,
현재는 서버가 1대이기 때문에 AllAtOnce를 선택합니다.
로드밸런스는 체크해제합니다.
배포그룹까지 생성했다면 CodeDeploy 설정은 끝입니다.
이제 Travis CI, S3, CodeDeploy를 연동만 하면 됩니다.