

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

# ステップ 14: クックブックを更新して繰り返しを使用する
<a name="gettingstarted-cookbooks-iteration"></a>

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

レシピコードを複数回繰り返す、*繰り返し*の手法を使用するレシピを追加してクックブックを更新します。このレシピは、複数のコンテンツを含むデータバッグ項目についてログにメッセージを表示します。

**インスタンスのクックブックを更新し、新しいレシピを実行するには**

1. ローカルワークステーションの `recipes` ディレクトリにある `opsworks_cookbook_demo` サブディレクトリで、以下のコードを含む `iteration_demo.rb` という名前のファイルを作成します。

   ```
   stack = search("aws_opsworks_stack").first
   Chef::Log.info("********** Content of 'custom_cookbooks_source' **********")
   
   stack["custom_cookbooks_source"].each do |content|
     Chef::Log.info("********** '#{content}' **********")
   end
   ```
**注記**  
前述のレシピコードの作成は、繰り返しを使わない次のレシピコードを記述するよりも短く、より柔軟になり、エラーが起きにくくなります。  

   ```
   stack = search("aws_opsworks_stack").first
   Chef::Log.info("********** Content of 'custom_cookbooks_source' **********")
   
   Chef::Log::info("********** '[\"type\", \"#{stack['custom_cookbooks_source']['type']}\"]' **********")
   Chef::Log::info("********** '[\"url\", \"#{stack['custom_cookbooks_source']['url']}\"]' **********")
   Chef::Log::info("********** '[\"username\", \"#{stack['custom_cookbooks_source']['username']}\"]' **********")
   Chef::Log::info("********** '[\"password\", \"#{stack['custom_cookbooks_source']['password']}\"]' **********")
   Chef::Log::info("********** '[\"ssh_key\", \"#{stack['custom_cookbooks_source']['ssh_key']}\"]' **********")
   Chef::Log::info("********** '[\"revision\", \"#{stack['custom_cookbooks_source']['revision']}\"]' **********")
   ```

1. ターミナルまたはコマンドプロンプトで、**tar** コマンドを使用して `opsworks_cookbook_demo.tar.gz` というファイルの新しいバージョンを作成します。これには、`opsworks_cookbook_demo` ディレクトリとその更新されたコンテンツが含まれます。

1. 更新済みの `opsworks_cookbook_demo.tar.gz` ファイルを S3 バケットにアップロードします。

1. 「[ステップ 5: インスタンスのクックブックを更新し、レシピを実行する](gettingstarted-cookbooks-copy-cookbook.md)」の手順に従って、インスタンスのクックブックを更新し、レシピを実行します。「レシピを実行するには」の手順の [**Recipes to execute**] に、「**opsworks\$1cookbook\$1demo::iteration\$1demo**」と入力します。

**レシピをテストするには**

1. 前の手順の [**Running command execute\$1recipes**] ページを表示した状態で、[**cookbooks-demo1**]、[**Log**] の [**show**] を選択します。[**execute\$1recipes**] ログページが表示されます。

1. ログを下にスクロールして、次のようなエントリを見つけます。

   ```
   [2015-11-16T19:56:56+00:00] INFO: ********** Content of 'custom_cookbooks_source' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["type", "s3"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["url", "https://s3.amazonaws.com/amzn-s3-demo-bucket/opsworks_cookbook_demo.tar.gz"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["username", "secret-key-value"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["password", "secret-access-key-value"]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["ssh_key", nil]' **********
   [2015-11-16T19:56:56+00:00] INFO: ********** '["revision", nil]' **********
   ```

   このレシピは、複数のコンテンツを含むデータバッグ項目についてログにメッセージを表示します。データバッグ項目は `aws_opsworks_stack` データバッグにあります。データバッグ項目には、`custom_cookbooks_source` という名前のコンテンツがあります。このコンテンツの内部には、`type`、`url`、`username`、`password`、`ssh_key`、および `revision` という名前の 6 つのコンテンツがあり、それらの値も表示されます。

[次のステップ](gettingstarted-cookbooks-conditional-logic.md)では、クックブックを更新して、特定の条件が満たされた場合のみレシピコードを実行します。