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)
所以我试图通过声明在 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)