Automation 및 Jenkins를 사용하여 AMIs 업데이트 - AWS Systems Manager

Automation 및 Jenkins를 사용하여 AMIs 업데이트

조직에서 CI/CD 파이프라인에 Jenkins 소프트웨어를 사용하는 경우 Automation을 사후 빌드 단계로 추가하여 Amazon Machine Images(AMIs)에 애플리케이션 릴리스를 미리 설치할 수 있습니다. Automation은 AWS Systems Manager의 기능입니다. 또한 Jenkins 예약 기능을 사용하여 Automation을 호출하고 고유의 OS(운영 체제) 패치 케이던스를 만들 수 있습니다.

아래 예제에서는 온프레미스 또는 Amazon Elastic Compute Cloud(Amazon EC2)에서 실행 중인 Jenkins 서버에서 Automation을 호출하는 방법을 보여줍니다. 인증을 위해 Jenkins 서버는 예제에서 생성하고 인스턴스 프로파일에 연결하는 IAM 정책을 기반으로 한 AWS 자격 증명을 사용합니다.

참고

인스턴스를 구성할 때는 반드시 Jenkins 보안 모범 사례를 따르세요.

시작하기 전 준비 사항

Jenkins를 사용하여 Automation을 구성하기 전에 다음 작업을 완료합니다.

Jenkins 서버의 IAM 정책 생성
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/ 에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 정책을 선택한 후 정책 생성을 선택합니다.

  3. JSON 탭을 선택합니다.

  4. example resource placeholder를 사용자의 정보로 바꿉니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:region:account ID:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:region:account ID:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. Review policy(정책 검토)를 선택합니다.

  6. 정책 검토(Review policy) 페이지에서 이름(Name)에 인라인 정책 이름을 입력합니다(예: JenkinsPolicy)

  7. 정책 생성을 선택합니다.

  8. 탐색 창에서 역할을 선택합니다.

  9. Jenkins 서버에 연결된 인스턴스 프로파일을 선택합니다.

  10. 권한 탭에서 권한 추가, 정책 연결을 선택합니다.

  11. 기타 권한 정책 섹션에서 이전 단계에서 생성한 정책의 이름을 입력합니다. JenkinsPolicy를 예로 들 수 있습니다.

  12. 정책 옆의 확인란을 선택한 다음 정책 연결을 선택합니다.

다음 절차를 사용하여 AWS CLI 서버에서 Jenkins를 구성합니다.

자동화를 위해 Jenkins 서버를 구성하려면
  1. 기본 브라우저를 사용하여 포트 8080에서 Jenkins 서버에 연결하고 관리 인터페이스에 액세스합니다.

  2. /var/lib/jenkins/secrets/initialAdminPassword에서 찾은 암호를 입력합니다. 암호를 표시하려면 다음 명령을 실행합니다.

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. Jenkins 설치 스크립트가 Jenkins 사용자 지정 페이지로 안내합니다. [제안된 플러그인 설치(Install suggested plugins)]를 선택합니다.

  4. 설치가 완료되면 관리자 자격 증명, 자격 증명 저장, Jenkins를 사용하여 시작을 차례로 선택합니다.

  5. 왼쪽 탐색 창에서 Jenkins 관리를 선택한 후 플러그인 관리를 선택합니다.

  6. [사용 가능(Available)] 탭을 선택하고 Amazon EC2 plugin을 입력합니다.

  7. Amazon EC2 plugin 확인란을 선택하고 [다시 시작하지 않고 설치(Install without restart)]를 선택합니다.

  8. 설치가 완료되면 [맨 위 페이지로 돌아가기(Go back to the top page)]를 선택합니다.

  9. Jenkins 관리를 선택한 다음 노드 및 클라우드 관리를 선택합니다.

  10. 클라우드 구성 섹션에서 새 클라우드 추가를 선택한 다음 Amazon EC2를 선택합니다.

  11. 나머지 필드에 정보를 입력합니다. EC2 인스턴스 프로파일을 사용하여 자격 증명 가져오기 옵션을 선택해야 합니다.

다음 절차를 사용하여 Automation을 호출하도록 Jenkins 프로젝트를 구성합니다.

Automation을 호출하도록 Jenkins 서버를 구성하려면
  1. 웹 브라우저를 사용하여 Jenkins 콘솔을 엽니다.

  2. 자동화로 구성할 프로젝트를 선택한 후 구성을 선택합니다.

  3. 빌드 탭에서 빌드 단계 추가를 선택합니다.

  4. Execute shell(셸 실행) 또는 Execute Windows batch command(Windows 배치 명령 실행)를 선택합니다(운영 체제에 따라 선택).

  5. 명령(Command) 필드에서 다음과 같이 AWS CLI 명령을 실행합니다. 각 example resource placeholder를 사용자의 정보로 바꿉니다.

    aws ssm start-automation-execution \ --document-name runbook name \ --region AWS 리전 of your source AMI \ --parameters runbook parameters

    다음 예제 명령에서는 UpdateMyLatestWindowsAmi 실행서와 Automation, AWS Lambda 및 Parameter Store를 사용하여 골든 AMI 업데이트에서 생성한 Systems Manager 파라미터 latestAmi를 사용합니다.

    aws ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'" --region region

    Jenkins에서 이 명령은 다음 스크린샷의 예제와 같이 표시됩니다.

    Jenkins 소프트웨어의 샘플 명령.
  6. Jenkins 프로젝트에서 지금 빌드를 선택합니다. Jenkins는 다음 예제와 비슷한 출력 결과를 반환합니다.

    Jenkins 소프트웨어의 샘플 명령 출력.