

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

# Configure レシピ
<a name="create-custom-configure"></a>

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

Configure レシピは、レイヤーの Configure [ライフサイクル](workingcookbook-events.md)イベントに割り当てられます。このイベントは、スタックのすべてのインスタンスで、インスタンスがオンライン状態になったとき、またはオンライン状態から別の状態になったときに発生します。Configure レシピを使用することで、必要に応じ、変更に対応してインスタンスの設定を調整します。Configure レシピを実装するときは、スタックの設定の変更がこのレイヤーとは無関係なインスタンスに関与している場合があることに注意してください。このレシピは、適切に応答できる必要があります。それは、場合によっては何も処理を実行しないことがあることを意味します。

## tomcat::configure
<a name="create-custom-configure-configure"></a>

`tomcat::configure` レシピは、レイヤーの Configure ライフサイクルイベントに対応します。

```
include_recipe 'tomcat::context'
# Optional: Trigger a Tomcat restart in case of a configure event, if relevant
# settings in custom JSON have changed (e.g. java_opts/JAVA_OPTS):
#include_recipe 'tomcat::container_config'
```

`tomcat::configure` レシピは、2 つの依存レシピを実行するメタレシピです。

1. `tomcat::context` レシピは、ウェブアプリケーションのコンテキスト設定ファイルを作成します。

   このファイルは、次のセクションで説明するように、アプリケーションが MySQL インスタンスとの通信に使用する JDBC リソースを設定します。設定イベントに応じてこのレシピを実行すると、データベースレイヤーが変更された場合に、レイヤーでウェブアプリケーションのコンテキスト設定ファイルを更新することができます。

1. `tomcat::container_config` Setup レシピは、コンテナ設定のあらゆる変更をキャプチャするために再度実行されます。

`include` の `tomcat::container_config` は、この例のようにコメントアウトされます。カスタム JSON を使用して Tomcat の設定を変更する必要がある場合は、このコメントを削除できます。その後、Configure ライフサイクルイベントでは、`tomcat::container_config` を実行することにより「[tomcat::container\$1config](create-custom-setup.md#create-custom-setup-config)」で説明するように Tomcat 関連の設定ファイルを更新し、Tomcat サービスを再起動します。

## tomcat::context
<a name="create-custom-configure-context"></a>

Tomcat クックブックは、[J2EE DataSource](http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html) オブジェクトを使用することで、別のインスタンスで実行されている場合がある MySQL データベースサーバーにアプリケーションがアクセスできるようにします。Tomcat では、各アプリケーションに対してウェブアプリケーションのコンテキスト設定ファイルを作成してインストールすることにより、接続を有効にできます。このファイルは、アプリケーションと、アプリケーションがデータベースとの通信に使用する JDBC リソースとの間の関係を定義します。詳細については、「[コンテキスト コンテナ](http://tomcat.apache.org/tomcat-7.0-doc/config/context.html)」を参照してください。

`tomcat::context` レシピの主な目的は、この設定ファイルを作成することです。

```
include_recipe 'tomcat::service'

node[:deploy].each do |application, deploy|
  context_name = deploy[:document_root].blank? ? application : deploy[:document_root]

  template "context file for #{application} (context name: #{context_name})" do
    path ::File.join(node['tomcat']['catalina_base_dir'], 'Catalina', 'localhost', "#{context_name}.xml")
    source 'webapp_context.xml.erb'
    owner node['tomcat']['user']
    group node['tomcat']['group']
    mode 0640
    backup false
    only_if { node['datasources'][context_name] }
    variables(:resource_name => node['datasources'][context_name], :webapp_name => application)
    notifies :restart, resources(:service => 'tomcat')
  end
end
```

Tomcat クックブック属性に加えて、このレシピは OpsWorks 、スタックが [Configure イベントでインストールするスタック設定とデプロイ属性](workingcookbook-json.md)を使用します。 OpsWorks スタックサービスは、データバッグを使用するか、各インスタンスで属性を検索してインストールすることで、レシピが通常取得する情報を含む属性を各インスタンスのノードオブジェクトに追加します。それらの属性に含まれるのは、スタック設定、デプロイされるアプリケーション、ユーザーに必要なカスタムデータに関する詳細情報です。レシピは、標準の Chef ノード構文を使用することで、スタック設定およびデプロイ属性からデータを取得できます。詳細については、「[スタック設定およびデプロイメント属性](workingcookbook-json.md)」を参照してください。Chef 11.10 スタックの場合、Chef の検索を使用してスタック設定およびデプロイデータを取得することもできます。詳細については、「[Chef の検索の使用](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search)」を参照してください。

`deploy` 属性とは、 コンソールまたは API を介して定義された、または OpsWorks スタックサービスによって生成されたデプロイ関連の属性を含む`[:deploy]`名前空間を指します。`deploy` 属性には、デプロイされる各アプリケーションの属性が含まれています。この属性の名前はアプリケーションの短縮名です。各アプリケーション属性には、ドキュメントのルート (`[:deploy][:appname][:document_root]`) など、アプリケーションの特性を示す一連の属性が含まれています。

`context` レシピは、最初に、[tomcat::service](create-custom-setup.md#create-custom-setup-service) を呼び出すことにより、この Chef 実行に対してサービスが定義されるようにします。次に、設定ファイルの名前を表す `context_name` 変数を定義します。拡張子の `.xml` は除外されます。デフォルトのドキュメントのルートを使用する場合、`context_name` はアプリケーションの短縮名に設定されます。それ以外の場合は、指定されたドキュメントのルートに設定されます。「[スタックの作成とアプリケーションの実行](create-custom-stack.md)」で説明する例では、ドキュメントのルートは `"ROOT"` に設定されるため、コンテキストは ROOT で、設定ファイルは `ROOT.xml` という名前になります。

レシピの大部分は、デプロイされているアプリケーションのリストを対象として機能し、各アプリケーションに対して `webapp_context.xml.erb` テンプレートを使用してコンテキスト設定ファイルを作成します。この例では、1 つのアプリケーションのみをデプロイしますが、`deploy` 属性でアプリケーションのリストとして定義する必要があります。

`webapp_context.xml.erb` テンプレートは、オペレーティングシステム固有でないため、`templates`ディレクトリの `default` サブディレクトリに配置されています。

このレシピは、次のように設定ファイルを作成します。
+ デフォルトの属性値を使用すると、設定ファイル名は `context_name.xml` に設定され、`/etc/tomcat6/Catalina/localhost/` ディレクトリにインストールされます。

  スタック設定属性から取得される `['datasources']` ノードには、1 つ以上の属性が含まれます。各属性は、関連付けられたアプリケーションがデータベースとの通信に使用する JDBC データリソースにコンテキスト名をマッピングします。「[スタックの作成とアプリケーションの実行](create-custom-stack.md)」で後ほど説明するように、スタックの作成時に、ノードとそのコンテンツがカスタム JSON を使用して定義されます。この例では、ROOT コンテキスト名と jdbc/mydb という名前の JDBC リソースを関連付ける 1 つの属性を使用します。
+ デフォルトの属性値を使用すると、ファイルのユーザーとグループはどちらも、Tomcat パッケージの `tomcat` (Amazon Linux の場合) または `tomcat6` (Ubuntu の場合) によって定義された値に設定されます。
+ `template` リソースは、`['datasources']` ノードが存在し、`context_name` 属性を含む場合にのみ、設定ファイルを作成します。
+ `template` リソースは、2 つの変数 `resource_name` と `webapp_name` を定義します。

  `resource_name` は `context_name` に関連付けられているリソース名に設定され、`webapp_name` はアプリケーションの短縮名に設定されます。
+ template リソースは、Tomcat サービスを再起動し、変更を読み込んでアクティブにします。

`webapp_context.xml.erb` テンプレートは、属性の固有のセットを使用する `Context` 要素を含む `Resource` 要素で構成されています。

`Resource` 属性は、コンテキスト設定の特性を示します。
+ **name** (名前) - JDBC リソース名。`tomcat::context` で定義されている `resource_name` 値に設定されます。

  たとえば、リソース名は jdbc/mydb に設定されます。
+ **auth** および **[type** (タイプ)] - これらは JDBC `DataSource` 接続の標準設定です。
+ **maxActive** (マックスアクティブ)、**maxIdle** (マックスアイドル)、および **maxWait** (マックスウェイト) - アクティブ接続およびアイドル接続の最大数、および返される接続を待機する最大時間。
+ **username** (ユーザーネーム) および **password** (パスワードパスワード) - データベースのユーザー名およびルートパスワード。`deploy` 属性から取得されます。
+ **driverClassName** (ドライバークラス名) - JDBC ドライバのクラス名。MySQL driver に設定されます。
+ **url** (url) - 接続 URL。

  プレフィックスはデータベースによって異なります。MySQL の場合は `jdbc:mysql` に、Postgres の場合は `jdbc:postgresql` に、SQL Server の場合は `jdbc:sqlserver` に設定する必要があります。この例では、URL を `jdbc:mysql://host_IP_Address:3306:simplejsp` に設定します。ここで、*simplejsp* はアプリケーションの短縮名です。
+ **factory** (ファクトリ) - `DataSource` ファクトリ。MySQL データベースに必須です。

この設定ファイルの詳細については、Tomcat Wiki のトピック「[DataSource の使用方法](http://wiki.apache.org/tomcat/UsingDataSources)」を参照してください。