AWS OpsWorks
ユーザーガイド (API バージョン 2013-02-18)

クックブックリポジトリ

カスタムクックブックはオンラインリポジトリ (.zip ファイルのようなアーカイブまたは Git のような ソース管理マネージャー) に保存する必要があります。スタックに割り当てることのできるカスタムクックブックは 1 つのみですが、リポジトリには任意の数のクックブックを保存できます。クックブックをインストールまたは更新すると、AWS OpsWorks スタックによってスタックの各インスタンスのローカルキャッシュにリポジトリ全体がインストールされます。たとえば、インスタンスで 1 つ以上のレシピを実行する必要がある場合、ローカルキャッシュのコードが使用されます。

以下では、タイプ別にクックブックリポジトリを構築する方法について説明します。図で斜体で示されているテキストは、リポジトリ名またはアーカイブ名を含むユーザー定義ディレクトリとファイル名を表します。

ソース管理マネージャー

AWS OpsWorks スタックでは、以下のソース管理マネージャーがサポートされています。

  • Linux スタック – Git と Subversion

  • Windows スタック – Git

以下に示しているのは、必要なディレクトリとファイル構造です。


                        SCM クックブックリポジトリの必須構造
  • クックブックのディレクトリはすべてトップレベルにあることが必要です。

アーカイブ

AWS OpsWorks スタックでは、以下のアーカイブがサポートされています。

  • Linux スタック – Amazon S3 またはウェブサイト(HTTP アーカイブ)に保存されている zip、gzip、bzip2、または tarball ファイル。

    AWS OpsWorks スタックは非圧縮の tarball をサポートしません。

  • Windows スタック – Amazon S3 に保存されている zip と tgz(gzip で圧縮された tar)ファイル。

以下では、実行しているのが Linux スタックであるか Windows スタックであるかに応じて、必要なディレクトリとファイルの構造を示しています。クックブック構造は、SCM リポジトリのものと同じであるため、省略記号(...)で表されます。


                        アーカイブの必須構造
  • Linux スタック – クックブックディレクトリはルートディレクトリ内にあることが必要です。

  • Windows スタック – クックブックはアーカイブのトップレベルにあることが必要です。

    クックブックが 1 つしかない場合は、必要に応じてクックブックディレクトリを省略し、クックブックファイルをトップレベルに配置できます。その場合、AWS OpsWorks スタックによって metadata.rb からクックブック名が取得されます。

各クックブックディレクトリには、次に示す標準ディレクトリとファイルが少なくとも 1 つ (通常はすべて)、標準の名前で含まれています。

  • attributes – クックブックの属性ファイルです。

  • recipes – クックブックのレシピファイルです。

  • templates – クックブックのテンプレートファイルです。

  • other – オプションのユーザー定義ディレクトリです。その他のファイルタイプ(定義や仕様など)が含まれます。

  • metadata.rb – クックブックのメタデータです。

    Chef 11.10 以降では、レシピが他のクックブックに依存している場合、クックブックの depends ファイルに、対応する metadata.rb ステートメントを含める必要があります。たとえば、クックブックに include_recipe anothercookbook::somerecipe のようなステートメントを持つレシピが含まれている場合は、クックブックの metadata.rb ファイルに depends "anothercookbook" という行が含まれている必要があります。詳細については、「クックブックのメタデータについて」を参照してください。

テンプレートは、templates ディレクトリのサブディレクトリに保存されている必要があります。templates ディレクトリには、少なくとも 1 つの、またはオプションで複数のサブディレクトリが含まれています。それらのサブディレクトリにも同様に、サブディレクトリが含まれている場合があります。

  • テンプレートには、通常、default というサブディレクトリがあります。ここには、Chef がデフォルトで使用するテンプレートファイルが含まれています。

  • other は、オペレーティングシステムに固有のテンプレート用に使用できる、オプションのサブディレクトリを表します。

  • Chef は、「File Specificity」で説明する命名規則に従って、適切なサブディレクトリのテンプレートを自動的に使用します。たとえば、 Linux および オペレーティングシステムの場合、amazonamazon または ubuntuubuntu という名前のサブディレクトリに、それぞれのオペレーティングシステム固有のテンプレートを保存できます。

カスタムクックブックの処理方法の詳細は、使用するリポジトリのタイプによって異なります。

アーカイブを使用するには

  1. 前のセクションで示したフォルダ構造を使用して、クックブックを実装します。

  2. 圧縮されたアーカイブを作成し、Amazon S3 バケットまたはウェブサイトにアップロードします。

    クックブックを更新した場合は、新しいアーカイブファイルを作成してアップロードする必要があります。Amazon S3 バケットに対して配信するコンテンツには、お客様のコンテンツが含まれる場合があります。機密データの削除の詳細については、「S3 バケットを空にする方法」または「S3 バケットを削除する方法」を参照してください。

SCM を使用するには

  1. 先ほど示した構造を使用して、Git または Subversion リポジトリを設定します。

  2. 必要に応じて、リポジトリのバージョン管理機能を使用して複数のブランチまたはバージョンを実装します。

    クックブックを更新する場合に、これを新しいブランチで行えば、新しいバージョンを使用することを OpsWorks に指示するだけで済みます。特定のタグ付きバージョンを指定することもできます。詳細については、「カスタムクックブックリポジトリの指定」を参照してください。

カスタムクックブックのインストール」では、AWS OpsWorks スタックによって、スタックのインスタンスにクックブックリポジトリをインストールする方法について説明しています。

重要

リポジトリ内の既存のクックブックを更新したら、AWS OpsWorks スタックによって各オンラインインスタンスのローカルキャッシュが更新されるように、update_cookbooks スタックコマンドを実行する必要があります。詳細については、「スタックコマンドの実行」を参照してください。