

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# テンプレート
<a name="workingcookbook-installingcustom-components-templates"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

多くのパッケージは、設定ファイルを作成してそれを適切なディレクトリに配置することによって設定されます。設定ファイルをクックブックに含めて目的のディレクトリにコピーすることもできますが、レシピを使用してテンプレートから設定ファイルを作成する方が、より柔軟性の高い方法です。テンプレートを使用する利点は、属性を使用してテンプレートの値を定義できることです。たとえば、カスタム 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] %>` は、`StartServers 16` では `httpd.conf` になります。
+ 条件付きで値を選択するには、`<%if-%>, <%else-%>, and <%end-%>` を使用します。

  この例では、プラットフォームに応じて、`accept.lock` の異なるファイルパスを設定します。

**注記**  
使用できる属性は、クックブックの属性ファイルに設定された属性のみに制限されているわけではありません。インスタンスのノードオブジェクトで属性を使用できます。たとえば、[Ohai](https://docs.chef.io/ohai.html) と呼ばれる Chef ツールによって生成され、ノードオブジェクトに組み込まれます。属性の詳細については、「[属性の上書き](workingcookbook-attributes.md)」を参照してください。

Ruby コードの組み込み方法など、テンプレートの詳細については、「[テンプレートについて](http://docs.chef.io/templates.html)」を参照してください。