CodePipeline 및 HashiCorp Packer를 AMI 사용하여 파이프라인 및 생성 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CodePipeline 및 HashiCorp Packer를 AMI 사용하여 파이프라인 및 생성

작성자: Akash Kumar(AWS)

환경: PoC 또는 파일럿

소스: DevOps

대상: Amazon Machine Images(AMI)

R 유형: 리호스트

워크로드: 기타 모든 워크로드

기술: DevOps, 현대화, 웹 및 모바일 앱

요약

알림: AWS CodeCommit 는 더 이상 신규 고객에게 제공되지 않습니다. 의 기존 고객은 평소와 같이 서비스를 계속 사용할 AWS CodeCommit 수 있습니다. 자세히 알아보기

이 패턴은 HashiCorp Packer를 사용하여 Amazon Web Services(AWS) 클라우드에서 파이프라인을 생성하고 Amazon Machine Image(AMI)를 생성하는 코드 샘플AWS CodePipeline 과 단계를 제공합니다. 이 패턴은 Git 기반 버전 제어 시스템으로 코드의 빌드와 테스트를 자동화하는 지속적 통합 방식을 기반으로 합니다. 이 패턴에서는 를 사용하여 코드 리포지토리를 생성하고 복제합니다AWS CodeCommit. 그런 다음 프로젝트를 생성하고 를 사용하여 소스 코드를 구성합니다AWS CodeBuild. 마지막으로 리포지토리에 커밋AMI되는 를 생성합니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • Amazon Elastic Compute Cloud(AmazonEC2) 인스턴스를 시작하기 AMI 위한 Amazon Linux

  • HashiCorp Packer 0.12.3 이상

  • Amazon CloudWatch 이벤트(선택 사항)

  • Amazon CloudWatch Logs(선택 사항)

아키텍처

다음 다이어그램은 이 패턴의 아키텍처를 AMI 사용하여 의 생성을 자동화하는 애플리케이션 코드의 예를 보여줍니다.

의 생성을 자동화합니다AMI.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 개발자는 프라이빗 CodeCommit Git 리포지토리에 코드 변경 사항을 커밋합니다. 그런 다음 CodeBuild 를 CodePipeline 사용하여 빌드를 시작하고 Amazon Simple Storage Service(Amazon S3) 버킷에 배포할 준비가 된 새 아티팩트를 추가합니다.

  2. CodeBuild 는 Packer를 사용하여 JSON 템플릿을 AMI 기반으로 를 번들링하고 패키징합니다. 활성화된 경우 소스 코드가 변경될 때 CloudWatch 이벤트가 파이프라인을 자동으로 시작할 수 있습니다.

기술 스택

  • CodeBuild

  • CodeCommit

  • CodePipeline

  • CloudWatch 이벤트(선택 사항)

도구

  • AWS CodeBuild- 클라우드의 완전 관리형 빌드 서비스입니다. AWS CodeBuild 는 소스 코드를 CodeBuild 컴파일하고, 단위 테스트를 실행하고, 배포할 준비가 된 아티팩트를 생성합니다.

  • AWS CodeCommit - AWS Cloud에 Git 리포지토리를 비공개로 저장하고 관리할 수 있는 버전 제어 서비스AWS CodeCommit 입니다. 자체 소스 제어 시스템을 관리하거나 인프라 확장에 대한 걱정을 CodeCommit 없앨 수 있습니다.

  • AWS CodePipeline - AWS CodePipeline 는 소프트웨어 릴리스에 필요한 단계를 모델링, 시각화 및 자동화하는 데 사용할 수 있는 지속적인 전송 서비스입니다.

  • HashiCorp Packer – HashiCorp Packer는 단일 소스 구성에서 동일한 기계 이미지 생성을 자동화하기 위한 오픈 소스 도구입니다. Packer는 가볍고, 모든 주요 운영 체제에서 실행되며, 여러 플랫폼에 대한 머신 이미지를 병렬로 생성합니다.

코드

이 패턴에는 다음과 같은 첨부 파일이 포함됩니다.

  • buildspec.yml - 이 파일은 CodeBuild 를 사용하여 배포를 위한 아티팩트를 빌드하고 생성합니다.

  • amazon-linux_packer-template.json – 이 파일은 Packer를 사용하여 Amazon Linux 를 생성합니다AMI.

에픽

작업설명필요한 기술

리포지토리를 생성합니다.

CodeCommit 리포지토리를 생성합니다.

AWS 시스템 관리자

리포지토리를 복제합니다.

CodeCommit 리포지토리 를 복제하여 리포지토리 에 연결합니다.

앱 개발자

소스 코드를 원격 리포지토리로 푸시합니다.

  1. 커밋을 생성하여 buildspec.ymlamazon-linux_packer-template.json 파일을 로컬 리포지토리에 추가합니다.

  2. 로컬 리포지토리에서 원격 CodeCommit 리포지토리로 커밋을 푸시합니다.

앱 개발자
작업설명필요한 기술

빌드 프로젝트를 생성합니다.

  1. AWS 관리 콘솔에 로그인하고 AWS CodeBuild 콘솔 을 연 다음 빌드 프로젝트 생성 을 선택합니다.

  2. 프로젝트 이름에 사용자의 프로젝트 이름을 입력합니다.

  3. 소스 공급자 에서 를 선택합니다AWS CodeCommit.

  4. 리포지토리의 경우 코드 파이프라인을 구축하려는 리포지토리를 선택합니다.

  5. 환경 이미지에, 관리형 이미지 또는r 사용자 지정 이미지를 선택합니다.

  6. [Operating system]에서 [Ubuntu]를 선택합니다.

  7. RunTime(s)의 경우표준을 선택합니다.

  8. 이미지 에서 aws/codebuild/standard:4.0을 선택합니다.

  9. Image version(이미지 버전)에서 Always use the latest image for this runtime version(이 실행 시간 버전에 항상 최신 이미지 사용)을 선택합니다.

  10. 환경에서 Linux를 선택합니다.

  11. 권한 확인란을 선택합니다.

  12. 서비스 역할에서, 새 서비스 역할 또는 기존 서비스 역할을 선택합니다.

  13. Build 사양에서 buildspec 파일 사용  또는r 빌드 명령 삽입을 선택합니다.

  14. (선택 사항) 아티팩트 섹션에서 유형의 경우 아티팩트 없음을 선택합니다.

  15. (권장) 빌드 출력 로그를 CloudWatch 로그에 업로드하려면 CloudWatch 로그를 선택합니다.

  16. (선택 사항) 빌드 출력 로그를 Amazon S3에 업로드하려면 S3 로그 확인란을 선택합니다.

  17. 빌드 프로젝트 생성을 선택합니다.

앱 개발자, AWS 시스템 관리자
작업설명필요한 기술

파이프라인 이름

  1. AWS 관리 콘솔에 로그인하고 AWS CodePipeline 콘솔 을 연 다음 파이프라인 생성 을 선택합니다.

  2. 파이프라인 이름에 파이프라인의 이름을 입력합니다.

  3. 서비스 역할에서, 새 서비스 역할 또는 기존 서비스 역할을 선택합니다.

  4. 역할 이름에 역할의 이름을 입력합니다.

  5. Amazon S3에서 버킷을 생성하고 해당 버킷에 아티팩트를 저장하도록 하려면 고급 설정 섹션에서 아티팩트 스토어에 대하여 기본 위치를 선택합니다. 기존 S3 버킷을 사용하려면 사용자 지정 위치을 선택합니다. Next(다음)를 선택합니다.

  6. 소스 공급자 에서 를 선택합니다AWS CodeCommit.

  7. 리포지토리 이름의 경우 이전에 복제한 리포지토리를 선택합니다. 브랜치 이름의 경우 소스 코드 브랜치를 선택합니다.

  8. 변경 감지 옵션 에서 Amazon CloudWatch Events(권장)를 선택하여 파이프라인AWS CodePipeline을 시작하거나 정기적으로 변경 사항을 확인합니다. Next(다음)를 선택합니다.

  9. 빌드 공급자 에서 를 선택합니다AWS CodeBuild.

  10. ForProject Name 에서 애플리케이션 에픽에 대한 프로젝트 생성에서 생성한 빌드 CodeBuild 프로젝트를 선택합니다.

  11. 빌드 옵션을 선택한 후 다음을 선택합니다.

  12. 배포 단계 건너뛰기를 선택합니다.

  13. [파이프라인 생성]을 선택합니다.

앱 개발자, AWS 시스템 관리자

관련 리소스

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.