

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

# 템플릿
<a name="workingcookbook-installingcustom-components-templates"></a>

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

구성 파일을 변경하고 적절한 디렉터리에 배치하여 여러 패키지를 구성합니다. 쿡북에 구성 파일을 포함하고 적절한 디렉터리에 복사할 수 있습니다. 하지만 보다 유연한 접근 방법은 레시피가 템플릿에서 구성 파일을 생성하게 하는 것입니다. 템플릿의 장점 한 가지는 속성을 사용하여 템플릿의 값을 정의할 수 있다는 것입니다. 그러면 예를 들어 사용자 정의 JSON을 사용하여 해당 속성 값을 재정의하면 쿡북을 손대지 않고 구성 파일을 수정할 수 있습니다.

템플릿은 연결된 파일과 콘텐츠 및 구조가 기본적으로 동일합니다. 다음은 예제 파일 `httpd.conf`입니다.

```
ServerRoot "<%= node[:apache][:dir] %>"
<% if node[:platform] == "debian" || node[:platform] == "ubuntu" -%>
  LockFile /var/lock/apache2/accept.lock
<% else -%>
   LockFile logs/accept.lock
<% end -%>
PidFile <%= node[:apache][:pid_file] %>
Timeout <%= node[:apache][:timeout] %>
KeepAlive <%= node[:apache][:keepalive] %>
MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %>
KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %>
<IfModule mpm_prefork_module>
    StartServers          <%= node[:apache][:prefork][:startservers] %>
    MinSpareServers       <%= node[:apache][:prefork][:minspareservers] %>
    MaxSpareServers       <%= node[:apache][:prefork][:maxspareservers] %>
    ServerLimit           <%= node[:apache][:prefork][:serverlimit] %>
    MaxClients            <%= node[:apache][:prefork][:maxclients] %>
    MaxRequestsPerChild   <%= node[:apache][:prefork][:maxrequestsperchild] %>
</IfModule>
...
```

다음 예제는 Ubuntu 인스턴스용으로 생성된 `httpd.conf` 파일입니다.

```
ServerRoot "/etc/httpd"
LockFile logs/accept.lock
PidFile /var/run/httpd/httpd.pid
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 3
<IfModule mpm_prefork_module>
    StartServers          16
    MinSpareServers       16
    MaxSpareServers       32
    ServerLimit           400
    MaxClients            400
    MaxRequestsPerChild   10000
</IfModule>
...
```

템플릿의 텍스트는 대부분 템플릿에서 `httpd.conf` 파일로 간단히 복사됩니다. 하지만 `<%= ... %>` 콘텐츠는 다음과 같이 처리됩니다.
+ Chef가 `<%= node[:attribute][:sub_attribute][:...]%>`를 속성 값으로 대체합니다.

  예를 들어 `StartServers <%= node[:apache][:prefork][:startservers] %>`는 `httpd.conf`에서 `StartServers 16`이 됩니다.
+ `<%if-%>, <%else-%>, and <%end-%>`를 사용하여 조건부로 값을 선택할 수 있습니다.

  예제는 `accept.lock`의 파일 경로를 플랫폼에 따라 다르게 설정합니다.

**참고**  
쿡북의 속성 파일 내 속성만 사용할 수 있는 것은 아닙니다. 인스턴스의 노드 객체에 포함된 속성은 모두 사용할 수 있습니다. 예를 들어, [Ohai](https://docs.chef.io/ohai.html)라는 Chef 도구로 생성하여 노드 객체에 통합하기도 합니다. 속성에 대한 자세한 정보는 [속성 재정의](workingcookbook-attributes.md)를 참조하세요.

Ruby 코드를 통합하는 방법을 포함해 템플릿에 대한 자세한 정보는 [템플릿 정보](http://docs.chef.io/templates.html)를 참조하세요.