

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

# 자세히 알아보기: 이 안내서에서 사용한 쿡북 살펴보기
<a name="gettingstarted-linux-explore-cookbook"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 서비스 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

이 주제에서는 Stacks가 연습에 사용한 OpsWorks 쿡북에 대해 설명합니다.

*쿡북*은 Chef 개념의 하나입니다. 쿡북은 레시피, 속성 값, 파일, 템플릿, 라이브러리, 정의, 사용자 지정 리소스 같은 구성 정보가 포함되어 있는 아카이브 파일입니다. *레시피* 역시 Chef 개념입니다. 레시피는 Ruby 언어 구문으로 작성된 지침으로서 사용할 리소스와 이러한 리소스가 적용되는 순서를 지정합니다. 자세한 내용은 [Learn Chef](https://learn.chef.io/) 웹 사이트의 [쿡북 정보](https://docs.chef.io/cookbooks.html) 및 [레시피 정보](https://docs.chef.io/recipes.html)를 참조하세요.

이 안내서에서 사용한 쿡북의 콘텐츠를 보려면 [opsworks-linux-demo-cookbooks-nodejs.tar.gz](https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-cookbooks-nodejs.tar.gz) 파일의 콘텐츠를 로컬 워크스테이션의 빈 디렉터리에 압축 해제하세요. 쿡북을 배포한 인스턴스에 로그인해 `/var/chef/cookbooks` 디렉터리의 내용을 살펴볼 수도 있습니다.

`cookbooks/nodejs_demo/recipes` 디렉터리의 `default.rb` 파일은 쿡북이 코드를 실행하는 곳입니다.

```
app = search(:aws_opsworks_app).first
app_path = "/srv/#{app['shortname']}"

package "git" do
  options "--force-yes" if node["platform"] == "ubuntu" && node["platform_version"] == "18.04"
end

application app_path do
  javascript "4"
  environment.update("PORT" => "80")

  git app_path do
    repository app["app_source"]["url"]
    revision app["app_source"]["revision"]
  end

  link "#{app_path}/server.js" do
    to "#{app_path}/index.js"
  end

  npm_install
  npm_start
end
```

이 파일이 하는 일은 다음과 같습니다.
+ `search(:aws_opsworks_app).first`는 Chef 검색을 사용하여 최종적으로 인스턴스에 배포될 앱에 대한 정보를 찾습니다. 이 정보에는 앱의 짧은 이름과 소스 리포지토리 세부 정보 같은 설정이 포함됩니다. 이 안내서에서는 앱 하나만 배포했으므로 Chef 검색은 인스턴스에서 `aws_opsworks_app` 검색 인덱스 내 정보의 첫 번째 항목에서 이러한 설정을 가져옵니다. 인스턴스가 시작될 때마다 OpsWorks Stacks는이 정보와 기타 관련 정보를 인스턴스 자체에 데이터 백 세트로 저장하고 Chef 검색을 통해 데이터 백 콘텐츠를 가져옵니다. 이 설정들을 이 레시피에 하드코딩할 수 있지만 데이터 백과 Chef 검색을 사용하는 것이 더 확실한 방법입니다. 데이터 백에 대한 자세한 정보는 [OpsWorks Stacks 데이터 백 참조](data-bags.md) 단원을 참조하세요. [Learn Chef](https://learn.chef.io/) 웹 사이트의 [데이터 백에 대한 정보](https://docs.chef.io/data_bags.html)도 참조하세요. Chef 검색에 대한 자세한 내용은 [Learn Chef](https://learn.chef.io/) 웹 사이트의 [검색 정보](https://docs.chef.io/chef_search.html)를 참조하세요.
+ `package` 리소스는 인스턴스에 Git를 설치합니다.
+ `application` 리소스는 웹 애플리케이션을 설명하고 배포합니다.
  + `javascript`는 설치할 JavaScript 런타임의 버전입니다.
  + `environment`는 환경 변수를 설정합니다.
  + `git`는 지정된 리포지토리와 브랜치에서 소스 코드를 가져옵니다.
  + `app_path`는 리포지토리를 복제할 경로입니다. 인스턴스에 경로가 없는 경우 OpsWorks Stacks가 경로를 생성합니다.
  + `link`는 심볼 링크를 생성합니다.
  + `npm_install`는 Node.js의 기본 패키지 관리자인 Node Package Manager를 설치합니다.
  + `npm_start`는 Node.js를 실행합니다.

Stacks가이 연습에 사용되는 OpsWorks 쿡북을 생성했지만 자체 쿡북을 생성할 수 있습니다. 자세한 방법은 [시작하기 - 쿡북](gettingstarted-cookbooks.md)을 참조하세요. 또한 [Learn Chef](https://learn.chef.io/) 웹 사이트의 [쿡북 정보](https://docs.chef.io/cookbooks.html), [레시피 정보](https://docs.chef.io/recipes.html) 및 [Chef Basics on Ubuntu 배우기](https://learn.chef.io/modules/learn-the-basics/ubuntu#/) 페이지로 이동하고, [Chef 시작하기](http://gettingstartedwithchef.com/) 웹 사이트의 [Chef를 이용한 첫 단계](http://gettingstartedwithchef.com/first-steps-with-chef.html)에서 “우리의 첫 Chef 쿡북” 섹션을 참조하세요.