本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 14 步:更新说明书以使用迭代
重要
这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过
通过添加可使用迭代 (一种多次重复配方代码的方法) 的配方,更新您的说明书。此配方会在日志中显示包含多方面内容的数据包项目的消息。
更新实例上的说明书并运行新的配方
-
在您的本地工作站上的
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']}\"]' **********")
-
在终端处或在命令提示符下,使用 tar 命令创建
opsworks_cookbook_demo.tar.gz
文件的新版本,该文件包含opsworks_cookbook_demo
目录及其更新的内容。 -
将更新后的
opsworks_cookbook_demo.tar.gz
文件上传到 S3 存储桶。 -
按照第 5 步:更新实例上的说明书并运行配方中的步骤,更新实例上的说明书并运行配方。在“运行配方”步骤中,对于 Recipes to execute (要执行的配方),键入
opsworks_cookbook_demo::iteration_demo
。
测试配方
-
通过上一步骤显示了 Running command execute_recipes 页面时,对于 cookbooks-demo1 中的 Log,选择 show。此时将显示 execute_recipes 日志页面。
-
向下滚动日志并查找类似于以下内容的条目:
[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
;还会显示它们的值。
在下一步中,您将更新说明书以仅在满足了某些条件后才运行配方代码。