DevEnjoy

One Step Closer

CodeDeploy

AWS CodeDeploy 설정

2016년 11월 18일 by YongPwi Leave a Comment

%ec%8a%ac%eb%9d%bc%ec%9d%b4%eb%93%9c2

  • Jenkins gProxyServer – Operation
    • 빌드 성공되면 AWS S3 버킷으로 결과물 업로드
    • Deploy an application to AWS CodeP plugin 사용
    • Deploy an application to AWS CodeDeply 설정값
      • AWS CodeDeploy Application Name : gProxyServer-Operation
      • AWS CodeDeploy Deployment Group : gp-gProxyServer-Operation
      • AWS CodeDeploy Deployment Config : CodeDeployDefault.OneAtATime
      • AWS Region : AP_NORTHEAST_2
      • S3 Bucket : gproxyserver-opertaion
      • Subdirectory : target/gProxyServer – 여기에 설정된 경로를 기준으로 아래 Include Files 를 가지고 온다.
        • appspec.yml 파일은 / 경로에 존재해야 한다. 그걸 고려해서 path를 잡아야 한다.
      • Include Files : **
      • Deploy Revision(radio selected)
      • Use Access/Secret keys – AWS AMI에 jenkins user 정보 등록

        • AWS Access Key : AKIAIKPIIGRGYZE22XFA
        • AWS Secret Key : ewLYt2u0suiYmMSm2uWVM/ueJtNWAZym4/LdLKTm
        • Secret Key 정보는 생성시에면 조회 가능, 분실시 재생성하고 jenkins 옵션에서 Access Key, Scret Key 정보 수정 필요
    • 빌드 및 S3까지는 정상적으로 처리 그러나 deploy 부분은 fail
      • 원인은 아직 못 찾음
      • jenkins 빌드 상태도 fail로 뜨기 때문에 콘솔 상태에서 build 상태와 S3로의 전송 로그를 확인 해야 한다.
  • AWS S3
    • Bucket: gproxyserver-opertaion 사용
    • jenkins에서 빌드가 완료되면 gProxyServer – Operation-896214853180744560.zip 형식으로 zip 파일로 저장
      확장자명 전에 숫자는 유니크 넘버인듯
  • CodeDeploy
    • 아마존 EC2 인스턴스 및 온프레미스에서 실행 중인 application 자동 배포 지원
    • 준비
      • EC2 인스턴스에서 S3에 접근하여 소스 다운을 위한 권한
      • CodeDeploy 서브시 실행 권한
      • 인스턴스에서 실행중인 Agent
      • 소스의 배포 명세하는 appspec.yml


    • IAM Role 생성
      • EC2 인스턴스를 위한 Role
        • Role을 생성하기 이전에 Policy를 먼저 생성한다.
          • Create Policy > Create Your Own Policy 클릭
          • Name : CodeDeploy-EC2-Policy
            Descriptions : Policy 설명을 적는다.
            Policy Document :

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            {
                "Version": "2012-10-17",
                "Statement": {
                    "Effect": "Allow",
                    "Action": [
                        "s3:Get*",
                        "s3:List*"
                    ],
                    "Resource": "*"
                }
            }
        • Create New Role

          • Set Role Name : CodeDeply-EC2
            Next Step 클릭

          • AWS Service Roles 탭 Amazon EC2 클릭

          • Attach Policy : CodeDeploy-EC2-Policy(상위에서 만든 Policy) 체크
            Next Step 클릭

          • Review : 입력한 정보 확인 후 Create Role 클릭

      • CodeDeploy를 위한 Role

        • Create New Role

          • Set Role Name : CodeDeploy-Service
            Next Step 클릭

          • AWS Service Roles 탭 Amazon EC2 클릭

          • Attach Policy : AWSCodeDeployRole 체크
            Next Step 클릭

          • Review : 입력한 정보 확인 후 Create Role 클릭

        • 추가 설정
          • IAM > Roles : 상위에서 만든 CodeDeploy-Service 클릭

          • 두번째 Trust Relationships 탭 선택 Edit Trust Relationship 클릭

          • Policy Document :

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Sid": "",
                  "Effect": "Allow",
                  "Principal": {
                    "Service": "codedeploy.ap-northeast-2.amazonaws.com" // 환경에 맞는 resion 정보를 입력 해준다.
                  },
                  "Action": "sts:AssumeRole"
                }
              ]
            }
    • CodeDeploy Agent 설치

      • 배포될 EC2 인스턴스에 CodeDeploy Agent 설치

        • 1
          2
          3
          4
          5
          6
          7
          8
          sudo apt-get update
          sudo apt-get install python-pip
          sudo apt-get install ruby
          sudo apt-get install wget
          cd /home/ubuntu
          wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
          chmod +x ./install
          sudo ./install auto
      • CodeDeploy 설치 상태 확인

        • 1
          sudo service codedeploy-agent statu
    • 배포 파일 준비

      • appspec.yml

        • AWS CodeDeploy 기본 배포 파일

        • 해당 파일은 압축된 원본 파일의 가장 상위에 존재해야 한다.

        • 1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          version: 0.0
          os
          : linux
          files
          :
            - source
          : /       // 배포될 소스 경로 지정(단일 파일 혹은 디렉토리 지정 가능)
              destination
          : /opt/tomcat-8.5.6/webapps/gProxyServer     // 인스턴스에 배포될 경로 지정
          hooks
          :
            BeforeInstall
          :       // 소스가 배포되기 전에 실행할 스크립트
               - location
          : scripts//stopTomcat.sh
            AfterInstall
          :    // 소스가 배포된 이후에 실행할 스크립트
              - location
          : scripts/reStartTomcat.sh
                timeout
          : 180
    • 배포
      • AWS-Console > CodeDeploy > Get Started Now > Custom Deployment > Skip Walkthrough
        • Create New Application
          • Application Name : gProxyServer-Operation
          • Deployment Group Name : gp-gProxyServer-Operation
          • Search by Tags : EC2 생성할때 입력한 tag 입력 Auto Scaling Group명 입력
            • 해당 Tag 명으로 instance를 찾아서 deploy target을 잡는다.
          • Service Role ARN : IAM에서 CodeDeploy를 위한 Role로 생성하였던 CdoeDeploy-Service Role 선택


      • Deploy New revision 생성
        • Actions > Deploy new revision 클릭
        • Application : CodeDeploy 설정할때 만들었던 Application Name
        • Deployment Group : Application 설정된 Group 리스트가 보인다.
        • Revision Location : S3://생성한 bucket-name/파일위치/파일명(zip, tar, tar.gz)
        • Deployment Config : CodeDeployDefalut.OneAtTime(일반적인 설정 환경에 맞게 선택)
        • Deploy Now 클릭
      • 이슈
        • 생성한 Deploy group으로 새롭게 생성된 S3 빌드 파일을 인식 못하는 버그가 있음
        • Deploy Group 삭제 후 다시 생성할때 변경된 S3 파일 링크 정보를 입력하면 정상 작동
Posted in: AWS, Gitlab, Java, Programing, Ubuntu Tagged: AWS, CodeDeploy

Calendar

6월 2025
일 월 화 수 목 금 토
« 4월    
1234567
891011121314
15161718192021
22232425262728
2930  

Recent Posts

  • ubuntu bastion 설정
  • Spring Boot properties 암호화
  • Git Repository Bitbucket과 Issue Tracker Redmine 연동 설정
  • Spring Security 동일 session 제어
  • Spring @Mock, @Mockbean, @InjectMock

Recent Comments

  • pzotov (Ubuntu 14.04에서 Sonarqube 6.7.1 service 등록)
  • cours de theatre paris (AWS ELB와 Auto Scaling 연동, nginx)
  • bayern munich (IntelliJ EAP Font rendering)
  • camiseta del chelsea (OS X에서 APP 아이콘 변경)
  • cheap football shirts replica (jQuery Ajax에서 json Array 직렬화)

Copyright © [the-year] [site-link].

Powered by [wp-link] and [theme-link].