Chef - 如果 variable1 匹配 variable2 中的任何内容,则使用食谱标记服务器

Chef - Tagging a server with a recipe if variable1 matches anything in variable2

所以我试图通过声明在 Chef 中标记服务器,如果 variable1 等于 variable2 中的任何值,则使用这行代码标记服务器 -

配方中的变量和代码default.rb -

node_gateway = node['network']['default_gateway']
dmz_gateways = node['tagging_test']['dmz_default_gateways']

tag('dmz') if node_gateway == dmz_gateways.any?

属性在default.rb-

default['tagging_test']['dmz_default_gateways'] = %w(192.168.0.1 192.168.1.1 192.168.2.1)

但是这不会产生任何错误,但也不会执行任何操作。

我已经确认我可以通过简单地标记服务器 -

tag('dmz')

我想我可以使用 .any?设置不正确。也许我的属性值也设置错误?

非常感谢任何回答。

除了 if 条件外,一切看起来都不错。

dmz_gateways.any? return true 并且您将其与 node_gateway == true 进行比较,而 return false

你可以纠正这样的事情:

node_gateway = node['network']['default_gateway']
dmz_gateways = node['tagging_test']['dmz_default_gateways']

tag('dmz') if dmz_gateways.include?(node_gateway)