Chef-如果变量1与变量2中的任何内容匹配,则使用食谱标记服务器

问题描述 投票:0回答:1

因此,我试图通过声明变量1等于变量2中的任何值来在Chef中标记服务器,以使用此行代码标记服务器-

配方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?设置不正确。也许我的属性值也设置错误?

非常感谢任何回答。

ruby chef
1个回答
0
投票

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

[dmz_gateways.any?返回true,您正在将其与返回false的node_gateway == true比较

您可以纠正类似的内容:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.