Configure レシピ - AWS OpsWorks

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

Configure レシピ

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

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

tomcat::configure

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 リソースを設定します。設定イベントに応じてこのレシピを実行すると、データベースレイヤーが変更された場合に、レイヤーでウェブアプリケーションのコンテキスト設定ファイルを更新することができます。

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

includetomcat::container_config は、この例のようにコメントアウトされます。カスタム JSON を使用して Tomcat の設定を変更する必要がある場合は、このコメントを削除できます。その後、Configure ライフサイクルイベントでは、tomcat::container_config を実行することにより「tomcat::container_config」で説明するように Tomcat 関連の設定ファイルを更新し、Tomcat サービスを再起動します。

tomcat::context

Tomcat クックブックを使用すると、アプリケーションは J2EE DataSource オブジェクトを使用して、別のインスタンスで実行できる MySQL データベースサーバーにアクセスできます。Tomcat では、各アプリケーションに対してウェブアプリケーションのコンテキスト設定ファイルを作成してインストールすることにより、接続を有効にできます。このファイルは、アプリケーションと、アプリケーションがデータベースとの通信に使用する JDBC リソースとの間の関係を定義します。詳細については、「コンテキスト コンテナ」を参照してください。

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

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

context レシピは、最初に、tomcat::service を呼び出すことにより、この Chef 実行に対してサービスが定義されるようにします。次に、設定ファイルの名前を表す context_name 変数を定義します。拡張子の .xml は除外されます。デフォルトのドキュメントのルートを使用する場合、context_name はアプリケーションの短縮名に設定されます。それ以外の場合は、指定されたドキュメントのルートに設定されます。「スタックの作成とアプリケーションの実行」で説明する例では、ドキュメントのルートは "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 データリソースにコンテキスト名をマッピングします。「スタックの作成とアプリケーションの実行」で後ほど説明するように、スタックの作成時に、ノードとそのコンテンツがカスタム JSON を使用して定義されます。この例では、ROOT コンテキスト名と jdbc/mydb という名前の JDBC リソースを関連付ける 1 つの属性を使用します。

  • デフォルトの属性値を使用すると、ファイルのユーザーとグループはどちらも、Tomcat パッケージの tomcat (Amazon Linux の場合) または tomcat6 (Ubuntu の場合) によって定義された値に設定されます。

  • template リソースは、['datasources'] ノードが存在し、context_name 属性を含む場合にのみ、設定ファイルを作成します。

  • template リソースは、2 つの変数 resource_namewebapp_name を定義します。

    resource_namecontext_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- MySQL ドライバーに設定されている JDBC ドライバーのクラス名。

  • 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 の使用 DataSources」トピックを参照してください。