2017-06-01 197 views
1

我尝试使用Chef cookbook中的搜索方法从远程节点检索IP地址属性,IP地址将用于配置本地节点上的DNS服务器设置。在厨师食谱中使用搜索

在我的测试中,我有一个域控制器“DC1”,我想从头开始启动另一台服务器。在新服务器加入我的测试域之前,它需要有正确的DNS条目。

作为实验室环境,我创建的是在AWS中分解并拆卸下来的DNS服务器的IP地址不总是相同的。

我希望能够获得IP地址并将其存储在变量中以供在食谱中使用。

的代码片段,我想用的是

search(:node, 'name:dc1', 
    :filter_result => { 'ip' => [ 'ipaddress' ] } 
    ).each do |result| 
     ipaddr = result['ip'] 
end 

我已经使用属性/ default.rb代码试过,但我得到一个错误,搜索是不是一个有效的方法。此外,我已经尝试my_var =搜索....但这也没有工作。

+0

我不确定你对此代码有什么期望。它将正确的IP分配给本地的'ipaddr'变量。在这个社区里,老百姓帮助你。如果您希望在块之外可见,请将其分配给在搜索或节点属性之前声明的变量。 –

+0

斯莱克的答案并没有帮助我试图做什么。将这个问题转移到Stack Overflow的原因是,这个问题很容易陷入困境。
如果我在配方中使用default ['network'] ['ip'] = search ... in attributes或my_var = search ...在我看到# 您的意思是?每个“ – SDBrett

回答

1

将变量放在前面并删除过滤器后的所有内容后,我停止收到错误“未知方法”搜索“”。

,这似乎是工作的代码是

ipaddr = search(:node, 'name:dc1') 

dnsserver = ipaddr[0]['ipaddress'] 

我现在应该能够使用的dnsserver在配方设置DNS服务器。