

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

# Chef 11.4 스택용 레시피 구현
<a name="workingcookbook-chef11-4"></a>

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

**중요**  
내장 쿡북 이름을 사용자 지정 또는 커뮤니티 쿡북에 재사용하지 마십시오. 내장 쿡북과 이름이 동일한 사용자 지정 쿡북은 실패할 수 있습니다. Chef 11.10, 11.4 및 0.9 스택에서 사용할 수 있는 내장 쿡북의 전체 목록은 [opsworks-cookbooks repository on GitHub](https://github.com/aws/opsworks-cookbooks)를 참조하세요.

Chef 11.4 스택의 기본적인 제약은 Chef 검색 또는 데이터 백을 사용할 수 없다는 점입니다. 그러나 OpsWorks Stacks는 다음을 포함하여 검색으로 얻을 수 있는 많은 정보가 포함된 [스택 구성 및 배포 속성을](workingcookbook-json.md) 각 인스턴스에 설치합니다.
+ 콘솔로부터의 사용자 정의 데이터, 예: 호스트 또는 앱 이름
+ 스택의 계층, 앱 및 인스턴스와 같은 OpsWorks Stacks 서비스에서 생성된 스택 구성 데이터 및 IP 주소와 같은 각 인스턴스에 대한 세부 정보입니다.
+ 사용자가 제공한 데이터를 포함하고 데이터 백과 거의 같은 용도로 사용할 수 있는 사용자 지정 JSON 속성

OpsWorks Stacks는 이벤트의 Chef 실행을 시작하기 전에 각 수명 주기 이벤트의 각 인스턴스에 현재 버전의 스택 구성 및 배포 속성을 설치합니다. 데이터는 표준 `node[:attribute][:child_attribute][...]` 구문을 통해 레시피에 제공됩니다. 예를 들어 스택 구성 및 배포 속성에는 스택 이름 `node[:opsworks][:stack][:name]`이 포함됩니다.

내장 레시피 중 하나에서 발췌된 다음 코드는 스택 이름을 가져오고 이를 사용하여 구성 파일을 생성합니다.

```
template '/etc/ganglia/gmetad.conf' do
  source 'gmetad.conf.erb'
  mode '0644'
  variables :stack_name => node[:opsworks][:stack][:name]
  notifies :restart, "service[gmetad]"
end
```

스택 구성 및 배포 속성 값이 여러 속성을 포함하는 경우가 많습니다. 필요한 정보를 얻으려면 이들 속성을 반복적으로 처리해야 합니다. 아래 예제는 스택 구성 및 배포 속성에서 발췌된 코드로, 편의상 JSON 객체로 표현되어 있습니다. 여기에는 최상위 속성 `deploy`이 포함되어 있습니다. 이 속성은 스택의 각 앱의 속성과 앱의 짧은 이름을 제공합니다.

```
{
  ...
  "deploy": {
    "app1_shortname": {
      "document_root": "app1_root",
      "deploy_to": "deploy_directory",
      "application_type": "php",
      ...
    },
    "app2_shortname": {
      "document_root": "app2_root",
      ...
    }
  },
  ...
}
```

각 앱 속성은 앱의 특징을 나타내는 속성 세트를 포함합니다. 예를 들어 `deploy_to` 속성은 앱의 배포 디렉터리를 나타냅니다. 다음 코드는 각 앱의 배포 디렉터리에 대해 사용자, 그룹 및 경로를 설정합니다.

```
node[:deploy].each do |application, deploy|
  opsworks_deploy_dir do
    user deploy[:user]
    group deploy[:group]
    path deploy[:deploy_to]
  end
  ...
end
```

스택 구성 및 배포 속성에 대한 자세한 정보는 [OpsWorks 스택 사용자 지정](customizing.md) 단원을 참조하세요. 배포 디렉터리에 대한 자세한 정보는 [Deploy 레시피](create-custom-deploy.md) 단원을 참조하세요.

Chef 11.4 스택은 데이터 백을 지원하지 않습니다. 하지만 사용자가 [사용자 지정 JSON](workingstacks-json.md)을 지정하여 스택 구성 및 배포 속성에 임의의 데이터를 추가할 수 있습니다. 그러면 레시피가 표준 Chef 노드 구문을 사용하여 데이터에 액세스할 수 있습니다. 자세한 내용은 [사용자 지정 JSON 사용](workingcookbook-json-override.md) 단원을 참조하십시오.

암호화된 데이터 백의 기능이 필요할 경우 한 가지 옵션은 민감한 속성을 프라이빗 Amazon S3 버킷 같은 안전한 위치에 저장하는 것입니다. 그러면 레시피가 모든 OpsWorks Stacks 인스턴스에 설치된 [AWS Ruby SDK](https://aws.amazon.com/documentation/sdkforruby/)를 사용하여 버킷에서 데이터를 다운로드할 수 있습니다.

**참고**  
각 OpsWorks Stacks 인스턴스에는 인스턴스 프로파일이 있습니다. 연결된 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html)은 인스턴스에서 실행되는 애플리케이션이 어떤 AWS 리소스에 액세스할 수 있는지를 지정합니다. 레시피가 Amazon S3 버킷에 액세스하려면 역할의 정책이 다음과 같은 문장을 포함해야 합니다. 이 문장은 지정된 버킷에서 파일을 검색할 수 있는 권한을 부여합니다.  

```
"Action": ["s3:GetObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
```
인스턴스 프로파일에 대한 자세한 정보는 [EC2 인스턴스에서 실행되는 앱에 대한 권한 지정](opsworks-security-appsrole.md) 단원을 참조하세요.