【发布时间】:2017-06-01 19:24:28
【问题描述】:
我正在尝试使用 Chef 食谱中的搜索方法从远程节点检索 IP 地址属性,然后该 IP 地址将用于配置本地节点上的 DNS 服务器设置。
在我的测试中,我有一个域控制器“DC1”,我想从头开始启动另一台服务器。在新服务器可以加入我的测试域之前,它需要有正确的 DNS 条目。
作为实验室环境,我正在创建的是在 AWS 中旋转和拆除,DNS 服务器的 IP 地址不会总是相同。
我希望能够获取 IP 地址并将其存储在一个变量中,以便在食谱中使用。
我尝试使用的代码 sn-p 是
search(:node, 'name:dc1',
:filter_result => { 'ip' => [ 'ipaddress' ] }
).each do |result|
ipaddr = result['ip']
end
我曾尝试使用 attributes/default.rb 中的代码,但我得到一个错误,即搜索不是有效的方法。此外,我尝试过 my_var = search .... 但这也没有用。
【问题讨论】:
-
我不确定您对这段代码有什么期望。它正在为本地
ipaddr变量分配正确的 IP。 tensibai 在社区 slack 上帮助您解决了这个问题。如果您想让它在块外可见,请将其分配给在搜索之前声明的变量或节点属性。 -
Slack 中的答案对我正在尝试做的事情没有帮助。将其移至 Stack Overflow 的原因是该问题很容易被埋没。
如果我在属性中使用 default['network']['ip'] = search ... 或在食谱中使用 my_var = search... 我会收到错误“未定义的方法 `search' for #<: node::attribute:0x00000006b5b25> 你的意思是?每个"
标签: chef-infra