数据包 'aws_opsworks_instance' 不可用
Data bag 'aws_opsworks_instance' not available
有谁知道为什么
instance = search('aws_opsworks_instance', 'self:true').first
# ...
instance_host: instance['hostname']
会间歇性地导致
undefined method `[]' for nil:NilClass
在 OpsWorks 上?
我已经搜索了几个小时但没有找到任何东西,所以我开始认为这是副产品,而不是实际问题。
因为它每隔一段时间就会发生一次,我认为它可能是 "race condition"。也许 OpsWorks 需要一段时间才能注入这个,所以需要告诉 Chef 等待?如果是这样,我在文档中找不到任何此类内容。
知道为什么会发生这种情况以及它是如何发生的吗fixed/avoided?
这是 aws opswork 特有的。这是 aws documentation:
的摘录
Chef search with self:true
finds the data bag item that contains information related to the instance that the recipe is being executed on.
从你的post中输出,instance
是null
,这是search()
returns没有搜索结果时的值.
也许 运行 主厨客户 --log_level debug
会透露更多信息或尝试联系 aws 支持团队。
OpsWorks 似乎依赖于实例名称来识别这些数据包,因此由于我们的脚本请求同时创建多个新实例,因此在分配名称时存在一些冲突(即名称重复)。
通过将 OpsWorks 命名主题从 Greek_Deities_and_Titans
(例如 hercules、zeus、poseidon)更改为 Layer_Dependent
(例如 api1、api2、notifications1、notification2),避免了该问题。
虽然Opsworks命名两个同名实例的问题可能不是最终解决方案,但我还没有遇到使用Layer_Dependent命名的问题,所以至少几率大大降低了。
有谁知道为什么
instance = search('aws_opsworks_instance', 'self:true').first
# ...
instance_host: instance['hostname']
会间歇性地导致
undefined method `[]' for nil:NilClass
在 OpsWorks 上?
我已经搜索了几个小时但没有找到任何东西,所以我开始认为这是副产品,而不是实际问题。
因为它每隔一段时间就会发生一次,我认为它可能是 "race condition"。也许 OpsWorks 需要一段时间才能注入这个,所以需要告诉 Chef 等待?如果是这样,我在文档中找不到任何此类内容。
知道为什么会发生这种情况以及它是如何发生的吗fixed/avoided?
这是 aws opswork 特有的。这是 aws documentation:
的摘录Chef search with
self:true
finds the data bag item that contains information related to the instance that the recipe is being executed on.
从你的post中输出,instance
是null
,这是search()
returns没有搜索结果时的值.
也许 运行 主厨客户 --log_level debug
会透露更多信息或尝试联系 aws 支持团队。
OpsWorks 似乎依赖于实例名称来识别这些数据包,因此由于我们的脚本请求同时创建多个新实例,因此在分配名称时存在一些冲突(即名称重复)。
通过将 OpsWorks 命名主题从 Greek_Deities_and_Titans
(例如 hercules、zeus、poseidon)更改为 Layer_Dependent
(例如 api1、api2、notifications1、notification2),避免了该问题。
虽然Opsworks命名两个同名实例的问题可能不是最终解决方案,但我还没有遇到使用Layer_Dependent命名的问题,所以至少几率大大降低了。