

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

# クックブックリポジトリ
<a name="workingcookbook-installingcustom-repo"></a>

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

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

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

**ソース管理マネージャー**  
OpsWorks スタックは、次のソースコントロールマネージャーをサポートしています。  
+ Linux スタック – Git と Subversion
+ Windows スタック – Git
以下に示しているのは、必要なディレクトリとファイル構造です。  

![\[SCM クックブックリポジトリの必須構造\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/cookbook_folders.png)

+ クックブックのディレクトリはすべてトップレベルにあることが必要です。

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

  OpsWorks スタックは非圧縮 tarball をサポートしていません。
+ Windows スタック – Amazon S3 に保存されている zip と tgz (gzip で圧縮された tar) ファイル。
以下では、実行しているのが Linux スタックであるか Windows スタックであるかに応じて、必要なディレクトリとファイルの構造を示しています。クックブック構造は、SCM リポジトリのものと同じであるため、省略記号（...）で表されます。  

![\[アーカイブの必須構造\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/cookbook_folders_archive.png)

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

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

各クックブックディレクトリには、次に示す標準ディレクトリとファイルが少なくとも 1 つ (通常はすべて)、標準の名前で含まれています。
+ `attributes` – クックブックの属性ファイルです。
+ `recipes` – クックブックのレシピファイルです。
+ `templates` – クックブックのテンプレートファイルです。
+ [*other*] (その他) – オプションのユーザー定義ディレクトリです。その他のファイルタイプ (定義や仕様など)が含まれます。
+ `metadata.rb` – クックブックのメタデータです。

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

テンプレートは、`templates` ディレクトリのサブディレクトリに保存されている必要があります。templates ディレクトリには、少なくとも 1 つの、またはオプションで複数のサブディレクトリが含まれています。それらのサブディレクトリにも同様に、サブディレクトリが含まれている場合があります。
+ テンプレートには、通常、`default` というサブディレクトリがあります。ここには、Chef がデフォルトで使用するテンプレートファイルが含まれています。
+ *other* は、オペレーティングシステムに固有のテンプレート用に使用できる、オプションのサブディレクトリを表します。
+ Chef は、「[File Specificity](http://docs.chef.io/templates.html#file-specificity)」で説明する命名規則に従って、適切なサブディレクトリのテンプレートを自動的に使用します。例えば、Linux および オペレーティングシステムの場合、`amazon` amazon または `ubuntu` ubuntu という名前のサブディレクトリに、それぞれのオペレーティングシステム固有のテンプレートを保存できます。

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

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

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

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

   クックブックを更新した場合、新しいアーカイブファイルを作成してアップロードする必要があります。Amazon S3 バケットに配信されるコンテンツには、カスタマーコンテンツが含まれている場合があります。機密データの削除の詳細については、[「S3 バケットを空にする方法」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)または[「S3 バケットを削除する方法」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)を参照してください。

**SCM を使用するには**

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

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

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

[カスタムクックブックのインストール](workingcookbook-installingcustom-enable.md) では、 OpsWorks スタックに クックブックリポジトリをスタックのインスタンスにインストールさせる方法について説明します。

**重要**  
リポジトリ内の既存のクックブックを更新したら、 `update_cookbooks`スタックコマンドを実行して、各オンラインインスタンスのローカルキャッシュを更新するように OpsWorks スタックに指示する必要があります。詳細については、「[スタックコマンドの実行](workingstacks-commands.md)」を参照してください。