本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 12 步:更新食谱以使用自定义 JSON
重要
这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过
通过添加引用存储在实例上的自定义食谱JSON来更新您的食谱。
无论何时创建、更新或克隆堆栈,或者在运行部署或堆栈命令时,都可以以自定义JSON格式指定信息。例如,这对为实例上您的配方提供小部分不变数据来代替从数据库中获得此数据来说非常有用。有关更多信息,请参阅 使用自定义 JSON。
在本演练中,您将使用自定义JSON来提供有关客户发票的一些虚构信息。该自定义JSON将在本步骤的后面部分介绍。
更新实例上的说明书并运行新的配方
-
在您的本地工作站上的
recipes
目录的opsworks_cookbook_demo
子目录中,创建名为custom_json.rb
的包含以下配方代码的文件:Chef::Log.info("********** For customer '#{node['customer-id']}' invoice '#{node['invoice-number']}' **********") Chef::Log.info("********** Invoice line number 1 is a '#{node['line-items']['line-1']}' **********") Chef::Log.info("********** Invoice line number 2 is a '#{node['line-items']['line-2']}' **********") Chef::Log.info("********** Invoice line number 3 is a '#{node['line-items']['line-3']}' **********")
此配方在日志中显示有关自定义值的消息JSON。
-
在终端处或在命令提示符下,使用 tar 命令创建
opsworks_cookbook_demo.tar.gz
文件的新版本,该文件包含opsworks_cookbook_demo
目录及其更新的内容。 -
将更新后的
opsworks_cookbook_demo.tar.gz
文件上传到 S3 存储桶。 -
按照第 5 步:更新实例上的说明书并运行配方中的步骤,更新实例上的说明书并运行配方。在“运行配方”步骤中,对于 Recipes to execute (要执行的配方),键入
opsworks_cookbook_demo::custom_json
。在 “高级、自定义 Chef” 中JSON,键入以下自定义JSON:{ "customer-id": "0123", "invoice-number": "9876", "line-items": { "line-1": "tractor", "line-2": "passenger car", "line-3": "trailer" } }
测试配方
-
通过上一步骤显示了 Running command execute_recipes 页面时,对于 cookbooks-demo1 中的 Log,选择 show。此时将显示 execute_recipes 日志页面。
-
向下滚动日志以查找类似于以下内容的条目:
[2015-11-14T14:18:30+00:00] INFO: ********** For customer '0123' invoice '9876' ********** [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 1 is a 'tractor' ********** [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 2 is a 'passenger car' ********** [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 3 is a 'trailer' **********
这些条目显示了在 “高级、自定义 JSON ChefJSON” 框中键入的自定义信息。
在下一步中,您将更新食谱以从数据袋中获取信息,数据袋是堆栈设置的集合 AWS OpsWorks 堆栈存储在每个实例上。