

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

# 속성을 재정의하여 OpsWorks 스택 구성 사용자 지정
<a name="workingcookbook-attributes"></a>

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

**참고**  
Windows 스택 및 Chef 12 Linux 스택의 경우 OpsWorks Stacks는 기본 제공 레시피 및 사용자 지정 레시피에 별도의 Chef 실행을 사용합니다. 즉, 이 섹션에 설명된 기법을 사용해서는 Windows 스택과 Chef 12 Linux 스택의 내장 속성을 재정의할 수 없습니다.

레시피와 템플릿은 계층 구성 또는 애플리케이션 서버 설정 같은 인스턴스 또는 스택별 정보를 다양한 Chef 속성에 의존합니다. 이들 속성에는 몇 가지 소스가 있습니다.
+ **사용자 지정 JSON** - 필요한 경우, 스택을 생성, 업데이트 또는 복제하거나 앱을 배포할 때 사용자 지정 JSON 속성을 지정할 수 있습니다.
+ **스택 구성 속성** -OpsWorks 스택은 콘솔 설정을 통해 지정하는 정보를 포함하여 스택 구성 정보를 보유하도록 이러한 속성을 정의합니다.
+ **배포 속성** — AWS OpsWorks는 Deploy 이벤트의 배포 관련 속성을 정의합니다.
+ **쿡북 속성** - 내장 쿡북과 사용자 지정 쿡북은 일반적으로 애플리케이션 서버 구성 설정 등 쿡북별 값을 나타내는 속성이 포함된 [속성 파일](workingcookbook-installingcustom-components-attributes.md)을 포함하고 있습니다.
+ **Chef** - Chef의 [Ohai 도구](http://docs.chef.io/resource_ohai.html)는 CPU 유형과 설치된 메모리 같은 다양한 시스템 구성 설정을 나타내는 속성을 정의합니다.

스택 구성 및 배포 속성과 내장 쿡북 속성의 완전한 목록은 [스택 구성 및 배포 속성: Linux](attributes-json-linux.md) 및 [내장 쿡북 속성](attributes-recipes.md)를 참조하세요. Ohai 속성에 대한 자세한 정보는 [Ohai](https://docs.chef.io/ohai.html)를 참조하세요.

배포 또는 구성과 같은 [수명 주기 이벤트](workingcookbook-events.md)가 발생하거나 `execute_recipes` 또는 `update_packages`같은 [스택 명령](workingstacks-commands.md)을 실행하면 OpsWorks Stacks는 다음을 수행합니다. 
+ 해당 명령을 각각의 해당 인스턴스의 에이전트에 전송합니다.

  이 에이전트는 적절한 레시피를 실행합니다. 예를 들어 Deploy 이벤트의 경우, 에이전트는 내장 Deploy 레시피를 실행한 다음 사용자 지정 Deploy 레시피를 실행합니다.
+ 사용자 지정 JSON 및 배포 속성을 스택 구성 속성에 병합하고 인스턴스에 설치합니다.

사용자 지정 JSON의 속성, 스택 구성 및 배포 속성, 쿡북 속성 및 Ohai 속성은 레시피에 속성 값을 제공하는 *노드 객체*에 병합됩니다. 인스턴스는 사용자 지정 JSON을 비롯한 스택 구성 속성에 관한 한 기본적으로 상태 비저장입니다. 배포 또는 스택 명령을 실행하면 연결된 레시피는 명령과 함께 다운로드된 스택 구성 속성을 사용합니다.

**Topics**
+ [

# 속성 우선 순위
](workingcookbook-attributes-precedence.md)
+ [

# 사용자 지정 JSON을 사용한 속성 재정의
](workingcookbook-json-override.md)
+ [

# 사용자 지정 OpsWorks 쿡북 속성을 사용하여 스택 속성 재정의
](workingcookbook-cookbook-attributes.md)

# 속성 우선 순위
<a name="workingcookbook-attributes-precedence"></a>

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

속성이 고유하게 정의되는 경우, Chef는 해당 속성을 노드 객체에 단순히 통합합니다. 하지만 모든 속성 소스는 어떤 속성도 정의할 수 있으므로 동일한 속성이 값이 각기 다른 여러 정의를 가질 수 있습니다. 예를 들어 내장 `apache2` 쿡북은 `node[:apache][:keepalive]`를 정의하지만 사용자 지정 JSON 또는 사용자 지정 쿡북에서도 해당 속성을 정의할 수 있습니다. 한 속성에 여러 정의가 있는 경우, 이 정의들은 뒤에 설명하는 순서대로 평가되며, 노드 객체는 우선 순위가 가장 높은 정의를 수신합니다.

속성은 다음과 같이 정의됩니다.

```
node.type[:attribute][:sub_attribute][:...]=value
```

속성에 여러 정의가 있는 경우 유형에 따라 우선 순위가 있는 정의가 결정되고 해당 정의가 노드 객체에 통합됩니다. OpsWorks Stacks는 다음 속성 유형을 사용합니다.
+ **default** - 이것은 가장 일반적인 유형이며, 기본적으로 "속성이 아직 정의되지 않았다면 이 값을 사용하라"는 뜻입니다. 속성의 모든 정의가 `default` 유형인 경우, 평가 순서에서 첫 번째 정의가 우선하며 후속 값들은 무시됩니다. Stacks는 모든 스택 구성 및 배포 속성 OpsWorks 정의를 `default` 유형으로 설정합니다.
+ **normal** - 이 유형의 속성은 모든 `default` 속성 또는 평가 순서에서 앞서 정의된 `normal` 속성을 재정의합니다. 예를 들어 첫 번째 속성이 내장 쿡북의 속성이고 `default` 유형을 가지고 있으며 두 번째는 사용자가 정의한 속성으로 `normal` 유형을 가지고 있다면 두 번째 속성이 우선합니다.
+ **set** - 이전의 쿡북에서 볼 수 있는 사용되지 않는 유형입니다. 이 유형은 같은 우선 순위를 갖는 `normal`로 대체되었습니다.

Chef는 다른 모든 속성 정의에 우선하는 `automatic` 유형을 비롯한 몇 가지 추가 속성 유형을 지원합니다. Chef의 Ohai 도구에 의해 생성되는 속성 정의는 모두 `automatic` 유형이므로 사실상 읽기 전용입니다. 이는 일반적으로 문제가 되지 않습니다. 재정의할 이유가 없고 OpsWorks Stacks의 속성과 별개이기 때문입니다. 다만 사용자 지정 쿡북 속성의 이름을 지정할 때는 Ohai 속성과 구별되도록 주의해야 합니다. 자세한 정보는 [속성 정보](http://docs.chef.io/attributes.html)를 참조하세요.

**참고**  
Ohai 도구는 명령줄에서 실행할 수 있는 실행 파일입니다. 인스턴스의 Ohai 속성을 나열하려면 인스턴스에 로그인하고 터미널 창에서 `ohai`를 실행합니다. 매우 긴 출력이 생성되므로 유의하세요.

다음은 다양한 속성 정의를 노드 객체에 통합하는 단계입니다.

1. 모든 사용자 지정 스택 구성 속성을 스택 구성 및 배포 속성에 병합합니다.

   스택이나 특정 배포에 대해 사용자 지정 JSON 속성을 설정할 수 있습니다. 사용자 지정 JSON 속성은 평가 순서에서 첫 번째이며 사실상 `normal` 유형입니다. 사용자 지정 JSON에서 하나 이상의 스택 구성 속성도 정의되는 경우, 사용자 지정 JSON 값이 우선합니다. 그렇지 않으면 OpsWorks Stacks는 단순히 사용자 지정 JSON 속성을 스택 구성에 통합합니다.

1. 모든 배포 사용자 지정 JSON 속성을 스택 구성 및 배포 속성에 병합합니다.

   배포 사용자 지정 JSON 속성도 사실상 `normal` 유형이므로 내장 및 사용자 지정 스택 구성 JSON과 내장 배포 JSON보다 우선합니다.

1. 스택 구성 및 배포 속성을 인스턴스의 노드 객체에 병합합니다.

1. 인스턴스의 내장 쿡북 속성을 노드 객체에 병합합니다.

   내장 쿡북 속성은 모두 `default` 유형입니다. 일반적으로 사용자 지정 JSON으로 정의했기 때문에 스택 구성 및 배포 속성에도 하나 이상의 내장 쿡북 속성이 정의된 경우 스택 구성 정의가 내장 쿡북 정의보다 우선합니다. 다른 모든 내장 쿡북 속성은 단순히 노드 객체에 통합됩니다.

1. 인스턴스의 사용자 지정 쿡북 속성을 노드 객체에 병합합니다.

   사용자 지정 쿡북 속성은 일반적으로 `normal` 또는 `default` 유형입니다. 고유한 속성은 노드 객체에 통합됩니다. 1\$13단계에서 사용자 지정 쿡북 속성도 정의한 경우(일반적으로 사용자 지정 JSON으로 정의했기 때문에) 우선 순위는 사용자 지정 쿡북 속성 유형에 따라 달라집니다.
   + 1-3단계에서 정의된 속성은 사용자 지정 쿡북 `default` 속성보다 우선합니다.
   + 사용자 지정 쿡북 `normal` 속성은 1-3단계의 정의보다 우선합니다.

**중요**  
사용자 지정 쿡북 `default` 속성을 사용하여 스택 구성 또는 내장 쿡북 속성을 재정의하지 마십시오. 사용자 지정 쿡북 속성은 마지막으로 평가되기 때문에 `default` 속성은 우선 순위가 가장 낮으며 아무것도 재정의할 수 없습니다.

# 사용자 지정 JSON을 사용한 속성 재정의
<a name="workingcookbook-json-override"></a>

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

**참고**  
 OpsWorks Stacks는 Windows 스택의 Chef 실행을 Linux 스택의 경우와 다르게 처리하기 때문에 Windows 스택의 경우이 섹션에서 설명하는 기술을 사용할 수 없습니다.

Stacks 속성을 재정의하는 가장 간단한 방법은 기본 제공 및 사용자 지정 OpsWorks 쿡북 속성뿐만 아니라 스택 구성 및 배포 속성보다 우선하는 사용자 지정 JSON으로 정의하는 것입니다`default`. 자세한 내용은 [속성 우선 순위](workingcookbook-attributes-precedence.md) 단원을 참조하십시오.

**중요**  
스택 구성 및 배포 속성을 재정의할 때는 주의해야 합니다. 예를 들어 `opsworks` 네임스페이스에서 속성을 재정의하면 내장 속성을 방해할 수 있습니다. 자세한 내용은 [스택 구성 및 배포 속성](workingcookbook-json.md) 섹션을 참조하세요.

사용자 지정 JSON을 사용하여 고유한 속성을 정의할 수도 있습니다(일반적으로 데이터를 사용자 지정 레시피에 전달하기 위해). 속성은 노드 객체에 통합되며, 레시피는 표준 Chef 노드 구문을 사용하여 속성 단원을 참조할 수 있습니다.

## 사용자 지정 JSON 지정 방법
<a name="workingcookbook-json-override-specify"></a>

사용자 지정 JSON을 사용하여 속성 값을 재정의하려면 먼저 속성의 정규화된 속성 이름을 확인해야 합니다. 그런 다음 재정의하려는 속성을 포함한 JSON 객체를 생성하고 선호하는 값으로 설정합니다. 편의상 [스택 구성 및 배포 속성: Linux](attributes-json-linux.md) 및 [내장 쿡북 속성](attributes-recipes.md) 문서에는 일반적으로 사용되는 스택 구성, 배포 및 내장 쿡북 속성과 그 정규화된 이름이 나와 있습니다.

객체의 상위-하위 관계는 적절한 정규화된 Chef 노드와 일치해야 합니다. 예를 들어 다음과 같은 Apache 속성을 변경하려 한다고 가정하겠습니다.
+ 노드가 `node[:apache][:keepalivetimeout]`이고 `3` 기본값을 가진 [`keepalivetimeout`](attributes-recipes-apache.md#attributes-recipes-apache-keep-timeout) 속성입니다.
+ 노드가 `node[:apache][:logrotate][:schedule]`이고 `"daily"` 기본값을 가진 `logrotate` [`schedule`](attributes-recipes-apache.md#attributes-recipes-apache-log-schedule) 속성입니다.

이 속성들을 재정의하고 값을 각각 `5`와 `"weekly"`로 설정하려면 다음 사용자 지정 JSON을 사용합니다.

```
{
  "apache" : {
    "keepalivetimeout" : 5,
    "logrotate" : {
       "schedule" : "weekly"
    }
  }
}
```

## 사용자 지정 JSON을 지정할 시기
<a name="workingcookbook-json-override-when"></a>

다음 작업에 사용자 지정 JSON 구조를 지정할 수 있습니다.
+ [새 스택 생성](workingstacks-creating.md)
+ [스택 업데이트](workingstacks-edit.md)
+ [스택 명령 실행](workingstacks-edit.md)
+ [스택 복제](workingstacks-cloning.md)
+ [앱 배포](workingapps-deploying.md)

각 작업에 대해 OpsWorks Stacks는 사용자 지정 JSON 속성을 스택 구성 및 배포 속성과 병합하고 인스턴스로 전송하여 노드 객체에 병합합니다. 다만 다음을 참고하세요.
+ 스택을 생성, 복제 또는 업데이트할 때 사용자 지정 JSON을 지정하는 경우, 속성은 모든 후속 수명 주기 이벤트 및 스택 명령의 스택 구성 및 배포 속성에 병합됩니다.
+ 배포를 위해 사용자 지정 JSON을 지정하는 경우, 속성은 해당 이벤트의 스택 구성 및 배포 속성에만 병합됩니다.

  후속 배포에 이러한 사용자 지정 속성을 사용하려면 사용자 지정 JSON을 다시 명시적으로 지정해야 합니다.

속성은 레시피에 의해 사용될 때 인스턴스에만 영향을 미친다는 점을 명심해야 합니다. 속성 값을 재정의해도 해당 속성 단원을 참조하는 후속 레시피가 없다면 변경은 효과가 없습니다. 연결된 레시피가 실행되기 전에 사용자 지정 JSON을 전송하거나 적절한 레시피를 다시 실행해야 합니다.

## 사용자 지정 JSON 모범 사례
<a name="workingcookbook-json-override-best"></a>

사용자 지정 JSON을 사용하여 모든 OpsWorks Stacks 속성을 재정의할 수 있지만 정보를 수동으로 입력하는 것은 다소 번거롭고 어떤 종류의 소스 제어도 하지 않습니다. 사용자 지정 JSON은 다음과 같은 용도로 가장 잘 활용할 수 있습니다.
+ 소수의 속성만 재정의하고 그 밖에는 사용자 지정 쿡북을 사용할 필요가 없을 때.

  사용자 지정 JSON을 사용하면 단지 2가지 속성을 재정의하기 위해 쿡북 리포지토리를 설정하고 유지 관리하는 부담을 피할 수 있습니다.
+ 암호 또는 인증 키 같은 중요한 값.

  쿡북 속성은 리포지토리에 저장되므로 중요한 정보가 침해될 위험이 있습니다. 그 대신 더미 값으로 기본값을 정의하고 사용자 지정 JSON을 사용하여 실제 값을 설정하세요.
+ 값은 다양할 것으로 예상됩니다.

  예를 들어 권장되는 관행은 프로덕션 스택을 별도의 개발 및 스테이징 스택으로 지원하는 것입니다. 이 스택들이 지불을 받는 애플리케이션을 지원한다고 가정해 보십시오. 사용자 지정 JSON을 사용하여 지불 엔드포인트를 지정하는 경우, 스테이징 스택에 테스트 URL을 지정할 수 있습니다. 업데이트된 스택을 프로덕션 스택으로 마이그레이션할 준비가 되면 같은 쿡북을 사용하고 사용자 지정 JSON을 사용하여 지불 엔드포인트를 프로덕션 URL로 설정할 수 있습니다.
+ 특정 스택 또는 배포 명령에 고유한 값.

# 사용자 지정 OpsWorks 쿡북 속성을 사용하여 스택 속성 재정의
<a name="workingcookbook-cookbook-attributes"></a>

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

**참고**  
Windows 스택의 경우 OpsWorks Stacks는 기본 제공 레시피와 사용자 지정 레시피에 별도의 Chef 실행을 사용합니다. 즉, 이 섹션에 설명된 기법을 사용해서는 Windows 스택의 내장 속성을 재정의할 수 없습니다.

사용자 지정 JSON은 Stacks 스택 구성 및 내장 OpsWorks 쿡북 속성을 재정의하는 편리한 방법이지만 몇 가지 제한이 있습니다. 특히 사용 시마다 사용자 지정 JSON을 수동으로 입력해야 하므로 정의를 관리할 확실한 방법이 없습니다. 더 좋은 방법은 사용자 지정 쿡북 속성 파일을 사용하여 내장 속성을 재정의하는 것입니다. 이렇게 하면 소스 제어 아래에 정의를 배치할 수 있습니다.

사용자 지정 속성 파일을 사용하여 OpsWorks Stacks 정의를 재정의하는 절차는 간단합니다.

**Stacks 속성 OpsWorks 정의를 재정의하려면**

1. [쿡북과 레시피](workingcookbook.md) 단원의 설명에 따라 쿡북 리포지토리를 설정합니다.

1. 재정의할 속성이 포함된 내장 쿡북과 같은 이름으로 쿡북을 생성합니다. 예를 들어 Apache 속성을 재정의하려면 쿡북의 이름을 apache2로 지정해야 합니다.

1. 쿡북에 `attributes` 폴더를 추가하고 `customize.rb` 폴더에 파일을 추가합니다.

1. 재정의할 내장 쿡북의 속성별로 이 파일에 속성 정의를 추가하고 원하는 값으로 설정합니다. 속성은 `normal` 유형 이상이어야 하며 해당 OpsWorks Stacks 속성과 노드 이름이 정확히 동일해야 합니다. 노드 이름을 포함한 OpsWorks Stacks 속성의 자세한 목록은 [스택 구성 및 배포 속성: Linux](attributes-json-linux.md) 및 섹션을 참조하세요[내장 쿡북 속성](attributes-recipes.md). 속성 및 속성 파일에 대한 자세한 정보는 [속성 파일 정보](http://docs.chef.io/attributes.html)를 참조하세요.
**중요**  
 OpsWorks Stacks 속성을 재정의하려면 속성`normal`이 유형이어야 합니다. `default` 유형에는 우선 순위가 없습니다. 예를 들어, `customize.rb` 파일에 `default[:apache][:keepalivetimeout] = 5` 속성 정의가 있어도 내장된 `apache.rb` 속성 파일의 해당 속성이 먼저 평가되면 그 속성이 우선 적용됩니다. 자세한 내용은 [속성 재정의](workingcookbook-attributes.md) 섹션을 참조하세요.

1. 재정의할 속성이 포함된 각 내장 쿡북에 대해 2 - 4단계를 반복합니다.

1. 스택에 대해 사용자 지정 쿡북을 활성화하고 Stacks가 OpsWorks 쿡북을 스택의 인스턴스에 다운로드하는 데 필요한 정보를 제공합니다. 자세한 내용은 [사용자 지정 쿡북 설치](workingcookbook-installingcustom-enable.md) 단원을 참조하십시오.

**참고**  
이 절차에 대한 완전한 안내는 [내장 속성 재정의](cookbooks-101-opsworks-attributes.md) 단원을 참조하세요.

이제 후속 수명 주기 이벤트, 배포 명령 및 스택 명령에 사용되는 노드 객체에 OpsWorks Stacks 값 대신 속성 정의가 포함됩니다.

예를 들어 `keepalivetimeout`에서 설명한 내장 `logrotate schedule` 및 [사용자 지정 JSON 지정 방법](workingcookbook-json-override.md#workingcookbook-json-override-specify) 설정을 재정의하려면 `apache2`apache 쿡북을 리포지토리에 추가하고 `customize.rb` 파일을 다음 콘텐츠와 함께 쿡북의 `attributes` 폴더에 추가합니다.

```
normal[:apache][:keepalivetimeout] = 5
normal[:apache][:logrotate][:schedule] = 'weekly'
```

**중요**  
연결된 내장 속성 파일의 사본을 수정하여 OpsWorks Stacks 속성을 재정의해서는 안 됩니다. 예를 들어 `apache.rb`를 `apache2/attributes` 폴더에 복사하고 일부 설정을 수정하는 경우, 기본적으로 내장 파일의 모든 속성이 재정의됩니다. 레시피는 사본의 속성 정의를 사용하고 내장 파일은 무시합니다. OpsWorks Stacks가 나중에 내장 속성을 수정하는 경우, 수동으로 사본을 업데이트하지 않는 한 레시피는 변경 사항에 액세스하지 못합니다.  
이런 상황을 피하기 위해 모든 내장 쿡북에는 `customize.rb` 명령을 통해 모든 모듈에 필요한 빈 `include_attribute` 속성이 포함되어 있습니다. `customize.rb` 사본의 속성을 재정의하면 이러한 특정 속성에만 영향을 미칠 수 있습니다. 레시피는 그 밖의 모든 속성 값을 내장 속성 파일에서 가져오며, 재정의하지 않은 속성의 현재 값을 자동으로 가져옵니다.  
이 방법은 쿡북 리포지토리의 속성 수를 적게 유지하도록 도움으로써 유지 관리 부담이 줄어들고 향후 업그레이드 관리가 쉬워집니다.