2017-06-01 6 views
1

Ich versuche, die Suchmethode in einem Kochbuch zu verwenden, um das IP-Adressattribut von einem Remote-Knoten abzurufen. Die IP-Adresse wird dann zum Konfigurieren der DNS-Servereinstellungen auf dem lokalen Knoten verwendet.Verwenden der Suche in Chefkochbuch

In meinen Tests habe ich einen Domänencontroller "DC1" und ich möchte einen anderen Server von Grund auf neu erstellen. Bevor der neue Server meiner Testdomäne beitreten kann, muss er den richtigen DNS-Eintrag haben.

Da die Laborumgebung, die ich erstelle, in AWS gesponnen und abgerissen wird, ist die IP-Adresse für den DNS-Server nicht immer dieselbe.

Ich möchte in der Lage sein, die IP-Adresse zu erhalten und in einer Variablen für den Einsatz im Kochbuch speichern.

Der Code-Snippet ich verwenden ist versucht

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

Ich habe versucht, den Code in Attributen/default.rb, aber ich erhalte eine Fehlermeldung, dass die Suche keine gültige Methode. Zusätzlich habe ich versucht my_var = search .... aber das hat auch nicht funktioniert.

+0

Ich bin mir nicht sicher, was Sie von diesem Code erwarten. Es weist der lokalen 'ipaddr'-Variablen die richtige IP zu. tensibai hat Ihnen dabei geholfen, die Community zu entlasten. Wenn Sie es außerhalb des Blocks sichtbar haben möchten, weisen Sie es einer Variablen zu, die vor dem Attribut search oder to node deklariert wurde. –

+0

Die Antwort in Slack half mir nicht bei dem, was ich tun wollte. Der Grund für die Umstellung auf Stack Overflow besteht darin, dass das Problem leicht durchhängen kann.
Wenn ich default ['network'] ['ip'] = search ... in attributes oder my_var = search ... in einem Rezept verwende, bekomme ich den Fehler "undefined method' search 'for # Meinst du? Jeder " – SDBrett

Antwort

1

Nachdem ich die Variable in den Vordergrund gestellt und alles nach dem Filter entfernt habe, habe ich den Fehler "unidentified method 'search'" nicht mehr erhalten.

Der Code, der zu funktionieren scheint, ist

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

dnsserver = ipaddr[0]['ipaddress'] 

Ich soll jetzt in der Lage sein, in dem Rezepte verwenden dnsserver DNS-Server zu setzen.

Verwandte Themen