2.3단계: 사용자 지정 쿡북 구현 - AWS OpsWorks

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

2.3단계: 사용자 지정 쿡북 구현

중요

The AWS OpsWorks Stacks 서비스 수명이 2024년 5월 26일에 종료되었으며 신규 및 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 다음 연락처로 문의하십시오. AWS Support 팀 구성: AWS re:포스트 포스트 또는 스루 AWS 프리미엄 지원.

스택은 기본적으로 인스턴스의 컨테이너이지만 인스턴스를 스택에 직접 추가하는 것은 아닙니다. 관련된 인스턴스 그룹을 각각 나타내는 하나 이상의 계층을 추가한 후 인스턴스를 계층에 추가합니다.

레이어는 기본적으로 다음과 같은 블루프린트입니다. AWS OpsWorks Stacks는 동일한 구성의 Amazon EC2 인스턴스 세트를 생성하는 데 사용합니다. 인스턴스는 운영 체제 기본 버전으로 시작하며, 인스턴스의 계층은 다음을 포함한 다양한 작업을 인스턴스에서 수행하여 이 청사진을 구현합니다.

  • 디렉터리 및 파일 생성

  • 사용자 관리

  • 소프트웨어 설치 및 구성

  • 서버 시작 또는 중지

  • 애플리케이션 코드 및 관련 파일 배포.

계층은 Chef 레시피(줄여서 레시피)를 실행하여 인스턴스에 대한 작업을 수행합니다. 레시피는 Chef의 도메인별 언어 (DSL) 를 사용하여 인스턴스의 최종 상태를 설명하는 Ruby 애플리케이션입니다. 다음과 같이 AWS OpsWorks 스택에서는 일반적으로 각 레시피가 레이어의 라이프사이클 이벤트 (설정, 구성, 배포, 배포 취소, 종료) 중 하나에 할당됩니다. 인스턴스에서 라이프사이클 이벤트가 발생하는 경우 AWS OpsWorks Stacks는 이벤트의 레시피를 실행하여 적절한 작업을 수행합니다. 예를 들어 인스턴스 부팅이 완료된 후에는 Setup 이벤트가 발생합니다. AWS OpsWorks 그런 다음 Stacks는 일반적으로 서버 소프트웨어 설치 및 구성, 관련 서비스 시작 같은 작업을 수행하는 설정 레시피를 실행합니다.

AWS OpsWorks 스택은 표준 작업을 수행하는 빌트인 레시피 세트를 각 레이어에 제공합니다. 추가 작업을 수행하는 사용자 지정 레시피를 구현하여 계층의 수명 주기 이벤트에 할당하면 계층의 기능을 확장할 수 있습니다. Windows 스택이 지원하는 사용자 지정 계층에는 소수의 기본적 작업만 수행하는 최소한의 레시피 세트가 있습니다. Windows 인스턴스에 기능을 추가하기 위해서는 소프트웨어 설치, 애플리케이션 배포 등을 수행하는 사용자 지정 레시피를 구현해야 합니다. 이 주제에서는 IIS 인스턴스를 지원하는 간단한 사용자 지정 레이어를 만드는 방법을 설명합니다.

쿡북 및 레시피에 대한 간략한 소개

레시피는 인스턴스의 예상되는 상태 중 하나 이상의 측면, 즉 어떤 디렉터리가 있어야 하고, 어떤 소프트웨어 패키지를 설치해야 하고, 어떤 앱을 배포해야 하는지 등을 정의합니다. 레시피는 일반적으로 하나 이상의 관련 레시피와 구성 파일을 생성하기 위한 템플릿 등의 관련 파일을 포함하는 쿡북에 패키징되어 있습니다.

이 주제는 간단한 사용자 지정 IIS 레이어를 지원하는 쿡북을 구현하는 방법을 보여주기에 충분하며 레시피에 대한 매우 기본적인 소개입니다. 쿡북에 대한 보다 전반적인 소개는 쿡북과 레시피 단원을 참조하세요. 일부 Windows 전용 주제를 포함한 상세한 쿡북 구현 자습서는 쿡북 101 단원을 참조하세요.

Chef 레시피는 엄밀히 말하면 Ruby 애플리케이션이지만, 전부는 아니더라도 대부분의 코드가 Chef에 있습니다. DSL 주로 리소스 세트로 DSL 구성되며, 이를 사용하여 인스턴스 상태의 특정 측면을 선언적으로 지정할 수 있습니다. 예를 들어 directory 리소스는 시스템에 추가할 디렉터리를 정의합니다. 다음 예제는 지정된 사용자에게 속하고 상위 디렉터리에서 권한을 상속하지 않는, 완전한 제어 권한이 있는 C:\data 디렉터리를 정의합니다.

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Chef는 레시피를 실행할 때 연결된 공급자, 즉 인스턴스 상태 수정의 세부 사항을 처리하는 Ruby 객체에 데이터를 전달함으로써 각각의 리소스를 실행합니다. 이 경우, 공급자는 지정된 구성을 가진 새 디렉터리를 생성합니다.

사용자 지정 IIS 계층의 사용자 지정 쿡북은 다음 작업을 수행해야 합니다.

  • IIS기능을 설치하고 서비스를 시작합니다.

    일반적으로 이 작업은 인스턴스 부팅이 완료된 직후 설정 도중에 수행합니다.

  • 이 예시에서는 간단한 HTML 페이지인 인스턴스에 앱을 배포합니다.

    일반적으로 이 작업은 설정 도중에 수행합니다. 다만 앱은 정기적으로 업데이트해야 하므로 인스턴스가 온라인 상태일 때 업데이트도 배포해야 합니다.

하나의 레시피가 이 모든 작업을 수행하도록 할 수도 있지만 설정 작업과 배포 작업을 별도의 레시피가 수행하도록 하는 것이 좋습니다. 이렇게 하면 설정 코드를 실행하지 않고도 언제든 앱 업데이트를 배포할 수 있습니다. 다음은 커스텀 IIS 레이어를 지원하도록 쿡북을 설정하는 방법을 설명합니다. 이후의 주제에서는 레시피를 구현하는 방법을 살펴봅니다.

시작하기
  1. 워크스테이션의 편리한 위치에 디렉터리 iis-cookbook을 만듭니다.

  2. iis-cookbook에 다음 콘텐츠가 포함된 metadata.rb 파일을 추가합니다.

    name "iis-cookbook" version "0.1.0"

    이 예제에서는 최소 metadata.rb를 사용합니다. 이 파일 사용 방법에 대한 자세한 정보는 metadata.rb를 참조하세요.

  3. recipes 디렉터리를 iis-cookbook에 추가합니다.

    이 디렉터리(이름이 recipes여야 함)에는 쿡북의 레시피가 포함되어 있습니다.

일반적으로 쿡북에는 그 밖의 다양한 디렉터리가 포함될 수 있습니다. 예를 들어 레시피가 템플릿을 사용하여 구성 파일을 생성하는 경우, 이 템플릿은 일반적으로 templates\default 디렉터리로 이동합니다. 이 예제의 쿡북은 레시피만으로 구성되어 있으므로 다른 디렉터리가 필요하지 않습니다. 또한 이 예제는 단일 쿡북을 사용하지만 필요에 따라 얼마든지 많은 쿡북을 사용할 수 있습니다. 복잡한 프로젝트에는 대체로 여러 개의 쿡북이 더 좋습니다. 예를 들어 설정 작업을 위한 쿡북과 배포 작업을 쿡북을 따로 둘 수 있습니다. 더 많은 쿡북 예제는 쿡북과 레시피 단원을 참조하세요.

설치 및 시작 레시피 구현 IIS

IISWindows 기능으로, Windows Server에 설치할 수 있는 선택적 시스템 구성 요소 집합 중 하나입니다. 다음 방법 중 IIS 하나로 레시피를 설치할 수 있습니다.

참고

powershell_script는 Windows 레시피에 가장 유용한 리소스 중 하나입니다. PowerShell 스크립트나 cmdlet을 실행하여 이를 사용하여 인스턴스에서 다양한 작업을 수행할 수 있습니다. 특히 Chef 리소스가 지원하지 않는 작업에 유용합니다.

이 예제에서는 PowerShell 스크립트를 실행하여 웹 서버 () IIS 를 설치하고 시작합니다. windows 쿡북은 나중에 설명합니다. 설치 방법에 대한 예는 windows_feature IIS 을 참조하십시오Windows 기능 설치: IIS.

다음 콘텐츠를 포함하는 install.rb라는 쿡북을 쿡북의 recipes 디렉터리에 추가합니다.

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

레시피에는 다음 2개의 리소스가 포함됩니다.

powershell_script

powershell_script지정된 PowerShell 스크립트 또는 cmdlet을 실행합니다. 예제에는 다음과 같은 속성 설정이 있습니다.

  • code— 실행할 PowerShell cmdlet입니다.

    이 예에서는 웹 서버 () 를 설치하는 Install-WindowsFeature cmdlet을 실행합니다. IIS 일반적으로 code 속성은 줄의 수에 제한이 없기 때문에 필요하다면 얼마든지 많은 cmdlet을 실행할 수 있습니다.

  • not-if— 레시피가 아직 설치되지 않은 IIS 경우에만 레시피가 설치되도록 하는 가드 속성입니다.

    일반적으로 원하는 레시피는 idempotent 방식이므로 같은 작업을 두 번 이상 수행하여 시간을 낭비하지 않습니다.

모든 리소스에는 공급자가 수행할 작업을 지정하는 작업이 있습니다. 이 예제에는 명시적인 조치가 없으므로 제공자는 지정된 PowerShell 스크립트를 실행하는 기본 :run 작업을 수행합니다. 자세한 내용은 윈도우 PowerShell 스크립트 실행 단원을 참조하십시오.

service

A는 서비스를 service관리하는데, 이 경우에는 웹 서버 IIS 서비스 (W3SVC) 입니다. 이 예제에서는 기본 속성을 사용하고 시작 및 IIS 활성화하는 두 개의 작업 :start:enable 및 를 지정합니다.

참고

패키지 설치 프로그램 (예:) 을 사용하는 소프트웨어를 설치하려는 경우 windows_package 리소스를 사용할 수 있습니다. MSI 자세한 내용은 패키지 설치 단원을 참조하십시오.

사용자 지정 쿡북 활성화

AWS OpsWorks Stacks는 각 인스턴스의 로컬 캐시에서 레시피를 실행합니다. 사용자 지정 레시피를 실행하려면 다음과 같은 작업을 수행해야 합니다.

  • 쿡북을 원격 리포지토리에 저장합니다.

    AWS OpsWorks Stacks는 이 리포지토리에서 각 인스턴스의 로컬 캐시로 쿡북을 다운로드합니다.

  • 스택을 편집하여 사용자 지정 쿡북을 활성화합니다.

    사용자 지정 쿡북은 기본적으로 비활성화되므로 스택에 대해 사용자 지정 쿡북을 활성화하고 URL 리포지토리와 관련 정보를 제공해야 합니다.

AWS OpsWorks Stacks는 사용자 지정 쿡북을 위한 S3 아카이브 및 Git 리포지토리를 지원합니다. 이 예에서는 S3 아카이브를 사용합니다. 자세한 내용은 쿡북 리포지토리 단원을 참조하십시오.

S3 아카이브를 사용하려면
  1. iis-cookbook 디렉터리의 .zip 아카이브를 생성합니다.

    AWS OpsWorks 스택은 Windows 스택용 .tgz (gzip 압축 tar) 아카이브도 지원합니다.

  2. 이 아카이브를 미국 서부(캘리포니아 북부) 리전의 S3 버킷에 업로드하고 이 파일을 퍼블릭으로 설정합니다. 또한 프라이빗 S3 아카이브를 사용할 수도 있지만 이 예제에는 퍼블릭 아카이브면 충분합니다. 퍼블릭 아카이브가 작업하기 더 간단합니다.

    1. 에 로그인하세요. AWS Management Console 에서 Amazon S3 콘솔을 엽니다 https://console.aws.amazon.com/s3/.

    2. us-west-1에 아직 버킷이 없는 경우 버킷 생성을 선택하여 미국 서부(캘리포니아 북부) 리전에서 버킷을 생성합니다.

    3. 버킷 목록에서 파일을 업로드할 버킷의 이름을 선택한 다음, 업로드를 클릭합니다.

    4. 파일 추가를 선택합니다.

    5. 업로드할 아카이브 파일을 선택한 다음, 열기를 선택합니다.

    6. [업로드 - 파일 및 폴더 선택] 대화 상자 아래에서 [세부 정보 설정]을 선택합니다.

    7. [세부 정보 설정] 대화 상자 아래에서 [권한 설정]을 선택합니다.

    8. [권한 설정] 대화 상자에서 [모든 항목을 퍼블릭으로 설정]을 선택합니다.

    9. [권한 설정] 대화 상자 아래에서 [업로드 시작]을 선택합니다. 업로드가 완료되면 iis-cookbook.zip 파일이 버킷에 나타납니다.

    10. 버킷을 선택한 다음, 해당 버킷의 속성 탭을 선택합니다. 링크 옆에 나중에 사용할 수 있도록 아카이브 파일을 URL 기록해 둡니다.

    Amazon S3 버킷에 파일을 업로드하는 방법에 대한 자세한 내용은 Amazon S3 콘솔 사용 설명서S3 버킷에 파일 및 폴더를 업로드하려면 어떻게 해야 합니까?를 참조하세요.

중요

지금까지 살펴보는 데 시간이 조금 걸렸습니다. AWS OpsWorks 스택 서비스 자체는 무료입니다. 하지만 Amazon S3 스토리지와 같이 사용하는 모든 AWS 리소스에 대해서는 비용을 지불해야 합니다. 아카이브를 업로드하는 즉시 요금이 발생하기 시작합니다. 자세한 내용은 AWS요금을 참조하십시오.

스택에 대한 사용자 지정 쿡북을 활성화하려면
  1. 에서 AWS OpsWorks 스택 콘솔의 탐색 창에서 스택을 선택한 다음 오른쪽 상단에서 스택 설정을 선택합니다.

  2. [설정] 페이지의 오른쪽 위에서 [편집]을 선택합니다.

  3. [설정] 페이지에서 [사용자 지정 Chef 쿡북 사용]을 []로 설정하고 다음 정보를 입력합니다.

    • 리포지토리 유형– S3 아카이브.

    • 리포지토리 URL - 이전에 기록한 쿡북 아카이브 URL 파일의 S3입니다.

  4. 저장을 선택하여 스택 구성을 업데이트합니다.

AWS OpsWorks Stacks는 모든 새 인스턴스에 사용자 지정 쿡북을 설치합니다. 참고: AWS OpsWorks Stacks는 온라인 인스턴스에 사용자 지정 쿡북을 자동으로 설치하거나 업데이트하지 않습니다. 이 작업은 뒤에 설명하는 것처럼 수동으로 수행할 수 있습니다.