

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

# 내장 속성 재정의
<a name="cookbooks-101-opsworks-attributes"></a>

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

**참고**  
이 주제는 Linux 스택에만 적용됩니다. Windows 스택에서는 내장 속성을 재정의할 수 없습니다.

OpsWorks Stacks는 각 인스턴스에 내장 쿡북 세트를 설치합니다. 내장 쿡북은 대부분 내장 계층을 지원하며, 속성 파일은 Apache 서버 구성 설정과 같은 다양한 기본 시스템 및 애플리케이션 설정을 정의합니다. 속성 파일에 이러한 설정을 포함시키면 다음 방법 중 하나를 사용하여 해당되는 내장 속성을 재정의함으로써 많은 구성 설정을 사용자 지정할 수 있습니다.
+ 속성을 사용자 지정 JSON으로 정의합니다.

  이 방법은 간단하고 유연하다는 장점이 있습니다. 하지만 속성 정의를 관리할 확실한 방법이 없으므로 수동으로 사용자 지정 JSON을 입력해야 합니다.
+ 사용자 지정 쿡북을 구현하고 속성을 `customize.rb` 속성 파일에 정의합니다.

  이 방법은 사용자 지정 JSON을 사용하는 것보다 덜 유연하지만, 사용자 지정 쿡북을 소스 제어에 포함시킬 수 있으므로 보다 확실합니다.

이 주제는 사용자 지정 쿡북 속성 파일을 사용하여 내장 속성을 재정의하는 방법을 Apache 서버를 예로 하여 설명합니다. 사용자 지정 JSON을 사용하여 속성을 재정의하는 방법에 대한 자세한 정보는 [사용자 지정 JSON 사용](workingcookbook-json-override.md) 단원을 참조하세요. 속성 재정의 대한 일반적 설명은 [속성 재정의](workingcookbook-attributes.md) 단원을 참조하세요.

**참고**  
속성 재정의는 구성 설정을 사용자 지정하는 데 선호되는 방법이지만, 설정이 항상 속성으로 표현되는 것은 아닙니다. 이런 경우 종종 내장 레시피가 구성 파일을 생성하는 데 사용하는 템플릿을 재정의하여 구성 파일을 사용자 지정할 수 있습니다. 예제는 [내장 템플릿 재정의](cookbooks-101-opsworks-templates.md) 섹션을 참조하세요.

일반적으로 내장 속성은 설정 레시피가 구성 파일을 생성하는 데 사용하는 템플릿 파일의 값을 나타냅니다. 예를 들어 `apache2` 설정 레시피 중 하나인 [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb)는 [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb) 템플릿을 사용하여 Apache 서버의 주 구성 파일 `httpd.conf`(Amazon Linux) 또는 `apache2.conf`(Ubuntu)를 생성합니다. 다음은 템플릿 파일에서 발췌한 코드입니다.

```
...
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %>
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %>
##
## Server-Pool Size Regulation (MPM specific)
##

...
```

이 예제의 `KeepAliveTimeout` 설정은 `[:apache][:keepalivetimeout]` 속성의 값입니다. 다음 코드에 나오듯이 이 속성의 기본값은 `apache2` cookbook's [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb) 속성 파일에서 정의됩니다.

```
...
# General settings
default[:apache][:listen_ports] = [ '80','443' ]
default[:apache][:contact] = 'ops@example.com'
default[:apache][:log_level] = 'info'
default[:apache][:timeout] = 120
default[:apache][:keepalive] = 'Off'
default[:apache][:keepaliverequests] = 100
default[:apache][:keepalivetimeout] = 3
...
```

**참고**  
일반적으로 사용되는 내장 속성에 대한 자세한 정보는 [내장 쿡북 속성](attributes-recipes.md) 단원을 참조하세요.

내장 속성 재정의를 지원하기 위해 모든 내장 쿡북은 `customize.rb` 속성 파일을 포함합니다. 이 파일은 `include_attribute` 명령을 통해 모든 모듈에 통합됩니다. 내장 쿡북의 `customize.rb` 파일은 속성 정의가 없으므로 내장 속성에 아무 영향을 미치지 않습니다. 내장 속성을 재정의하려면 내장 쿡북과 동일한 이름을 사용하여 사용자 지정 쿡북을 생성하고 사용자 지정 속성 정의를 마찬가지로 `customize.rb`로 명명된 속성 파일에 저장합니다. 이 파일은 내장 버전보다 우선하며 관련된 모든 모듈에 포함됩니다. `customize.rb`에서 내장 속성을 정의할 경우 이들이 해당되는 내장 속성을 재정의합니다.

이 예제는 내장 `[:apache][:keepalivetimeout]` 속성을 재정의하여 값을 3 대신 5로 설정하는 방법을 보여줍니다. 모든 내장 속성에서 비슷한 방법을 사용할 수 있습니다. 하지만 어느 속성을 재정의할지는 신중해야 선택해야 합니다. 예를 들어 `opsworks` 네임스페이스에서 속성을 재정의하면 일부 내장 레시피에 문제가 생길 수 있습니다.

**중요**  
내장 속성 파일의 사본 자체를 수정하여 내장 속성을 재정의하지 마십시오. 예를 들어 사용자 지정 쿡북의 * 폴더에 *의 사본을 저장하고 일부 설정을 수정할 수 `apache.rb`있습니다`apache2/attributes`. 하지만 이 파일은 내장 버전에 우선하므로 이제부터 내장 레시피가 사용자 지정 버전의 `apache.rb`를 사용합니다. 나중에 OpsWorks Stacks가 기본 제공 `apache.rb` 파일을 수정하는 경우 버전을 수동으로 업데이트하지 않는 한 레시피는 새 값을 가져오지 않습니다. `customize.rb`를 사용하면 지정된 속성만 재정의되고 내장 레시피는 재정의되지 않은 모든 속성에 대해 계속해서 최신 값을 자동으로 가져옵니다.

시작하려면 사용자 지정 쿡북을 생성합니다.

**쿡북을 생성하려면**

1. `opsworks_cookbooks` 디렉터리 안에 쿡북 디렉터리 `apache2`를 만들고 그 디렉터리로 이동합니다.

   내장 속성을 재정의하려면 사용자 지정 쿡북의 이름이 내장 쿡북과 동일해야 합니다(이 예제에서는 `apache2`).

1. `apache2` 디렉터리 내에 `attributes` 디렉터리를 만듭니다.

1. `customize.rb` 파일을 `attributes` 디렉터리에 추가하고 이 파일을 사용하여 재정의하려는 내장 쿡북 속성을 정의합니다. 이 예제의 경우 파일에 다음 내용이 포함되어 있어야 합니다.

   ```
   normal[:apache][:keepalivetimeout] = 5
   ```
**중요**  
내장 속성을 재정의하려면 사용자 지정 속성이 `normal` 유형 이상이어야 하며 해당하는 내장 속성과 노드 이름이 정확하게 같아야 합니다. `normal` 유형은 사용자 지정 속성이 모두 `default` 유형인 내장 속성보다 우선하도록 합니다. 자세한 내용은 [속성 우선 순위](workingcookbook-attributes-precedence.md) 섹션을 참조하세요.

1. `opsworks_cookbooks.zip` 이름이 지정된 `opsworks_cookbooks`의 `.zip` 아카이브를 생성하고 아카이브를 Amazon Simple Storage Service(S3) 버킷에 업로드합니다. 간단하게 설명하기 위해 [이 파일을 퍼블릭으로 설정](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html)합니다. 나중에 사용하기 위해 이 URL을 적어 둡니다. 프라이빗 Amazon S3 아카이브 또는 기타 리포지토리 유형에 쿡북을 저장할 수도 있습니다. 자세한 내용은 [쿡북 리포지토리](workingcookbook-installingcustom-repo.md) 섹션을 참조하세요.

   Amazon S3 버킷에 전달한 콘텐츠에는 고객 콘텐츠가 포함될 수 있습니다. 중요 데이터 제거에 관한 자세한 내용은 [S3 버킷을 비우려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) 단원 또는 [S3 버킷을 삭제하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) 단원을 참조하세요.

사용자 지정 속성을 사용하려면 스택을 생성하고 쿡북을 설치합니다.

**사용자 지정 속성을 사용하려면**

1. [OpsWorks Stacks 콘솔](https://console.aws.amazon.com/opsworks/)을 열고 **스택 추가**를 선택합니다.

1. 다음 표준 설정을 지정합니다.
   + **이름** - ApacheConfig
   + **리전** – 미국 서부(오레곤)

     모든 리전에서 스택을 저장할 수 있지만 자습서의 경우 미국 서부(오레곤)를 선택하는 것이 좋습니다.
   + **기본 SSH 키** - EC2 키 페어

     EC2 키 페어를 생성해야 하는 경우 [Amazon EC2 키 페어](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)를 참조하세요. 키 페어는 스택과 동일한 AWS 리전에 속해야 합니다.

   [**고급>>**]을 선택하고 [**사용자 지정 Chef 쿡북 사용**]을 [**예**]로 설정한 후 다음 설정을 지정합니다.
   + **리포지토리 유형** – **Http Archive**
   + **리포지토리 URL** - 앞에서 기록해 둔 쿡북 아카이브 URL

   다른 설정에 대해서는 기본값을 수락한 다음 [**스택 추가**]를 선택해 스택을 생성합니다.
**참고**  
이 예제에서는 기본 운영 체제인 Amazon Linux를 사용하지만, 원한다면 Ubuntu를 사용해도 됩니다. Ubuntu 시스템에서는 내장 설정 레시피가 설정이 동일한 구성 파일 `apache2.conf`를 생성해 `/etc/apache2` 디렉터리에 저장한다는 점만 다릅니다.

1. **계층 추가**를 선택한 다음 스택에 기본 설정으로 [Java 앱 서버 계층을 추가](layers-java.md)합니다.

1. 기본 설정을 사용하여 계층에 [24/7 인스턴스를 추가](workinginstances-add.md)한 다음 해당 인스턴스를 시작합니다.

   이 예제에는 t2.micro 인스턴스면 충분합니다.

1. 인스턴스가 온라인 상태가 되면 [SSH를 사용하여 이 인스턴스에 연결](workinginstances-ssh.md)합니다. `httpd.conf` 파일은 `/etc/httpd/conf` 디렉터리에 있습니다. 이 파일을 확인하는 경우 사용자 지정 `KeepAliveTimeout` 설정이 보여야 합니다. 나머지 설정은 내장 `apache.rb` 파일의 기본값을 갖습니다. `httpd.conf`의 관련 부분에 다음과 비슷한 내용이 표시됩니다.

   ```
   ...
   #
   # KeepAliveTimeout: Number of seconds to wait for the next request from the
   # same client on the same connection.
   #
   KeepAliveTimeout 5
   ...
   ```