working aws codedeploy devops tool
AWS CodeDeploy를 사용한 자동 배포에 대한 자습서 :
에 AWS DevOps 도구의 2 부 , Maven을 사용하여 J2EE 프로젝트를 빌드하는 데 CodeBuild 서비스가 어떻게 사용되는지 살펴 보았습니다.
이 자습서에서는 CodeDeploy 서비스를 사용하여 Tomcat 애플리케이션 서버에 배포하는 데 S3 버킷에 저장된 아티팩트 WAR 파일을 사용하는 방법을 알아 봅니다.
확인 => DevOps 교육에 대한 이상적인 가이드
AWS CodeDeploy는 Amazon EC2 Linux 또는 Windows 인스턴스에 대한 애플리케이션 배포를 자동화하는 배포 서비스입니다.
이 자습서에서는 Jenkins를 CodeDeploy와 통합하는 방법도 설명합니다.
전제 조건 :
- AWS 계정은 가급적 프리 티어입니다.
- 좋고 빠른 인터넷 연결.
- 사용 된 AWS 리전 – 아시아 태평양 (싱가포르).
- Amazon Linux 또는 RHEL EC2 인스턴스.
- EC2 인스턴스에 설치된 Tomcat.
노트 : 콘텐츠를 배포하기 위해 AWS CodeCommit 리포지토리는 CodeDeploy 서비스에 대해 지원되지 않습니다. S3 및 GitHub 만 지원됩니다.
학습 내용 :
- CodeDeploy 설정
- Amazon Linux EC2 인스턴스 시작
- AWS CodeDeploy를 S3와 통합
- CodeDeploy 애플리케이션 생성
- AWS CodeDeploy와 Jenkins 통합
- 결론
- 추천 도서
CodeDeploy 설정
AWS CodeDeploy는 즉, 배포를 위해 아티팩트 (WAR 파일)가 저장된 S3 버킷과 EC2 인스턴스에 액세스하기 위해 두 개의 엔터티와 함께 작동해야합니다. CodeDeploy 서비스가 이러한 IAM에 액세스 할 수있는 권한을 제공하려면 역할을 설정해야합니다. IAM 역할은 IAM 사용자에 대해 정의되지 않았지만 엔티티에 대한 액세스 권한 만 있습니다.
#1) 만들기 첫 번째 역할 CodeDeploy 서비스가 EC2 인스턴스에 액세스합니다.
IAM을 시작하고 역할-> 역할 만들기.
아래에 AWS 서비스 클릭 EC2-> 사용 사례 선택-> EC2 그리고 클릭 다음-> 권한.
선택 AWSCodeDeployRole 정책 이름에서 다음-> 검토.
역할 이름을 입력하고 역할을 만듭니다.
마지막으로이 역할에 대한 신뢰 관계를 편집하여 CodeDeploy 서비스가 전체 또는 특정 리전 / 엔드 포인트에 액세스 할 수 있도록합니다.
역할을 클릭하고 아래와 같이 신뢰 관계를 업데이트하십시오.
안드로이드에 APK 파일이 저장된 위치
정책에서 EC2를 Codedeploy로 변경하고 신뢰 정책 업데이트.
두) 만들기 두 번째 역할 CodeDeploy 서비스를 사용하여 S3 버킷에 액세스하는 EC2 인스턴스의 경우.
이 역할에 대해 위의 단계를 반복하고 아래와 같이 입력하십시오.
- 이동 IAM-> 역할-> 역할 생성.
- AWS 서비스에서 EC2를 선택합니다.
- 그 아래에서 사용 사례를 다시 선택하고 EC2를 클릭하고 버튼을 클릭하십시오. 다음-> 권한.
- 권한 정책 연결 화면에서 AmazonS3ReadOnlyAccess 버튼을 클릭하세요 다음-> 검토.
- 역할 이름 지정 HW-Codedeploy-EC2-S3 그리고 역할을 만듭니다.
이제 두 역할을 모두 사용할 수 있습니다.
Amazon Linux EC2 인스턴스 시작
이 섹션에서는 이제 EC2 인스턴스를 프로비저닝합니다.
인스턴스를 프로비저닝하는 동안 역할을 선택해야합니다. HW-Codedeploy-EC2-S3 ...동안 인스턴스 세부 정보 구성 단계. 또한 포트 8080을 열어 두십시오.
이와 함께 우리는 또한 설치해야 할 것입니다 CodeDeploy 에이전트 및 Tomcat 애플리케이션 배포에 사용될 애플리케이션 서버로 사용됩니다.
# 1) Amazon Linux 인스턴스에 CodeDeploy 에이전트 설치 및 구성
CodeDeploy 에이전트는 배포에 도움이되며 배포가 수행 될 모든 인스턴스 (환경)에 설치되어야합니다.
Linux 인스턴스에 로그인하고 사용중인 지역에 따라 에이전트를 다운로드합니다. 우리의 경우에는 식별자가있는 싱가포르 지역입니다. ap- 남동쪽 -1.
에이전트를 다운로드하는 명령은 다음 형식입니다.
wget https : // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) EC2 인스턴스에 Tomcat 설치
- Tomcat을 설치하고 실행하려면 다음 단계를 순서대로 수행하십시오.
yum 설치 tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- 응용 프로그램 관리자에 대해 바람둥이 사용자를 활성화합니다. /etc/tomcat7/tomcat-users.xml 파일에 표시된대로 변경을 수행하십시오.
- 마지막으로 Tomcat 서비스를 시작하십시오.
서비스 tomcat7 시작
- 시작하다 Tomcat 웹 애플리케이션 관리자 URL http : // : 8080 / manager를 사용하여 작동하는지 확인하십시오.
AWS CodeDeploy를 S3와 통합
2 부에서 언급했듯이 CodeDeploy는 최신 버전의 애플리케이션을 배포하는 데 사용되는 코드 리포지토리로 S3 및 GitHub 만 지원합니다. 애플리케이션 WAR 파일은 S3 버킷에 저장되므로 유지되는 형식이 ZIP 파일인지 확인해야합니다.
이는 WAR 파일이 CodeDeploy를 사용하는 배포 프로세스에서 지원하는 ZIP 파일에 있어야 함을 의미합니다.
- AWS CLI (명령 줄 인터페이스)도 Linux 인스턴스에 설치해야합니다. 참조하십시오 URL 설치하기 위해서.
- Linux 인스턴스에서 다음 단계를 실행하여 S3 버킷에서 WAR을 다운로드합니다. 다음 단계는 일반적으로 빌드 머신에서 수행해야합니다.
AWS_ACCESS_KEY_ID = 설정
AWS_SECRET_ACCESS_KEY = 설정
AWS_DEFAULT_REGION = ap-southeast-1 설정
cd / opt / niranjan
aws s3 cp s3 : //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy는 appspec.yml EC2 인스턴스에 대한 배포 지침이 포함 된 파일. 이 파일은 애플리케이션 WAR 파일이 다운로드 된 폴더의 루트에 있어야합니다.
아래와 같이 appspec.yml 파일과 스크립트 폴더를 만듭니다.
이벤트는 배포 중에 다음 순서로 실행됩니다.
# 1) ApplicationStop
# 2) 설치 전
# 3) 설치 (파일 섹션이 호출되고 WAR 파일이 복사 됨)
# 4) ApplicationStart
- 사용 된 폴더 계층은 다음과 같습니다.
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
스크립트
start_application
stop_application
uninstall_war_file
- 스크립트 내용
stop_application :
curl –user tomcat : tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application :
curl –user tomcat : tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
uninstall_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- 콘텐츠를 압축하고 ZIP 파일을 S3 버킷에 업로드합니다. 버킷에서 VERSIONING이 활성화되어 있는지 확인합니다.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war appspec.yml 스크립트
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3 : //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
S3 버킷에 업로드 된 ZIP 파일은 아래 화면과 같습니다.
명령을 하나씩 실행하는 대신 실행 가능한 스크립트를 만들고 위의 명령을 추가하고 빌드에서 새 애플리케이션 WAR 파일을 사용할 수있을 때마다 실행할 수 있습니다.
CodeDeploy 애플리케이션 생성
CodeDeploy 애플리케이션은 EC2 인스턴스 인 적절한 환경에 WAR 파일의 적절한 개정이 배포되도록하기 위해 생성됩니다.
CodeDeploy 서비스를 시작하고 응용 프로그램 만들기 단추.
애플리케이션 이름, 배포 그룹 ( 예: QA-Env) 실행중인 EC2 인스턴스를 선택합니다.
양식 끝에서 서비스 역할을 선택하십시오. 이것은 튜토리얼의 앞부분에서 생성 된 다른 역할입니다.
클릭 응용 프로그램 만들기 단추.
배포 그룹 (QA-Env)을 선택하고 작업-> 새 개정 배포.
ZIP 파일은 S3 버킷에 있으므로 다음과 같이 개정 위치를 입력합니다.
s3 : //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
클릭 배포 단추. 아래와 같이 배포가 성공적입니다.
WAR 파일이 tomcat webapps 디렉토리에 성공적으로 복사됩니다.
애플리케이션 URL을 찾아 애플리케이션이 성공적으로 배치되었는지 확인하십시오.
AWS CodeDeploy와 Jenkins 통합
이전 2 개의 자습서에서 보았 듯이 Jenkins는 AWS DevOps 도구와 매우 잘 통합됩니다. Jenkins를 CodeDeploy와 통합하려면 플러그인을 설치해야합니다. 딸깍 하는 소리 여기 CodeDeploy 플러그인을 다운로드하고 설치합니다.
먼저 IAM 사용자의 액세스 및 비밀 키를 Jenkins-> 구성 .
결론
지금까지 CodeDeploy를 사용하여 S3 버킷에 저장된 J2EE 애플리케이션 WAR 파일을 tomcat 애플리케이션 서버를 실행하는 EC2 인스턴스에 자동으로 배포하는 방법을 살펴 보았습니다.
PC 무료 다운로드를위한 유튜브 비디오 다운로더
이 세 가지 도구 (CodeCommit, CodeBuild 및 CodeDeploy) 시리즈는 DevOps의 지속적 통합 및 지속적 제공 측면에서 도움이됩니다. 이 3 가지 도구와 함께 AWS CodePipeline은 애플리케이션 제공의 엔드 투 엔드 시각화를 돕는 또 다른 도구입니다.
Elastic Beanstalk를 사용하여 AWS에 .NET 웹 애플리케이션을 배포하는 방법에 대해 자세히 알아 보려면 다음 자습서를 계속 확인하십시오.