2017-06-01 153 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服務器。