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

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

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

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

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

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

  • 디렉터리 및 파일 생성

  • 사용자 관리

  • 소프트웨어 설치 및 구성

  • 서버 시작 또는 중지

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

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

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를 설치하고 시작

IIS는 Windows 기능으로서 Windows 서버에 설치할 수 있는 선택적 시스템 구성 요소 세트 중 하나입니다. 다음 방법 중 하나로 레시피가 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입니다.

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

  • not-if – 아직 설치되지 않은 경우에만 레시피가 IIS를 설치하도록 하는 guard 속성.

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

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

service

service는 서비스, 이 경우에는 Web Server IIS 서비스(W3SVC)를 관리합니다. 예제는 기본 속성을 사용하여 IIS를 시작하고 활성화하는 :start:enable이라는 두 가지 작업을 지정합니다.

참고

MSI 같은 패키지 설치 프로그램을 사용하는 소프트웨어를 설치하려면 windows_package 리소스를 사용하면 됩니다. 자세한 정보는 패키지 설치을 참조하세요.

사용자 지정 쿡북 활성화

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 로그인하고 https://console.aws.amazon.com/s3/ 에서 Amazon S3 콘솔을 엽니다.

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

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

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

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

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

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

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

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

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

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

중요

지금까지 안내서에서 소요된 시간은 얼마 되지 않으며, AWS OpsWorks Stacks 서비스 자체는 무료입니다. 단, Amazon S3 스토리지 등 사용하는 AWS 리소스에 대해서는 요금을 지불해야 합니다. 아카이브를 업로드하는 즉시 요금이 발생하기 시작합니다. 자세한 내용은 AWS 요금을 참조하세요.

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

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

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

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

    • 리포지토리 URL - 앞에서 기록해 둔 쿡북 아카이브 파일의 S3 URL.

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

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