ステップ 14: クックブックを更新して繰り返しを使用する - AWS OpsWorks

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

ステップ 14: クックブックを更新して繰り返しを使用する

重要

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

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

インスタンスのクックブックを更新し、新しいレシピを実行するには
  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']}\"]' **********")
  2. ターミナルまたはコマンドプロンプトで、tar コマンドを使用して opsworks_cookbook_demo.tar.gz というファイルの新しいバージョンを作成します。これには、opsworks_cookbook_demo ディレクトリとその更新されたコンテンツが含まれます。

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

  4. ステップ 5: インスタンスのクックブックを更新し、レシピを実行する」の手順に従って、インスタンスのクックブックを更新し、レシピを実行します。「レシピを実行するには」の手順の [Recipes to execute] に、「opsworks_cookbook_demo::iteration_demo」と入力します。

レシピをテストするには
  1. 前の手順の [Running command execute_recipes] ページを表示した状態で、[cookbooks-demo1]、[Log] の [show] を選択します。[execute_recipes] ログページが表示されます。

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

    [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/opsworks-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 という名前のコンテンツがあります。このコンテンツの内部には、typeurlusernamepasswordssh_key、および revision という名前の 6 つのコンテンツがあり、それらの値も表示されます。

次のステップでは、クックブックを更新して、特定の条件が満たされた場合のみレシピコードを実行します。