2016-06-02 6 views
1

Ich versuche, einige Werte in Chefrezept aus der JSON-Datei zu übergeben.
Alles, was ich will, ist einige Werte in meinem Rezept aus der Remote-Datei zu setzen. Lesen Sie Params von JSON Chef

Meine JSON-Datei my_conf.json sieht wie folgt aus:

{ 
    "something": { 
    "listen_port": "81", 
    "listen_path": "/myapp" 
    }, 
    "users":{ 
    "user": "me" 
    } 
} 

ich meinen Chef-Client mit diesem json in params laufen:

chef-client -z run.rb -j my_conf.json 

Im Rezept, das ich versucht:

@test = node[:something][:listen_port] 
@test = node['something']['listen_port'] 
@test = node.default[:something][:listen_port] 

Aber nichts funktioniert. Irgendwelche Ideen?

+0

Was machen Sie eigentlich mit dem Inhalt von '@test'? Im rezeptcode funktioniert das perfekt 'puts node [' something '] [' listen_port '] '(das gleiche gilt für die Version mit Symbolen (': something'). – StephenKing

Antwort

1

node['something']['listen_port'] ist korrekt, aber node[:something][:listen_port] wird auch funktionieren. Wahrscheinlicher ist es, wenn man eine Instanzvariable (@test =) statt einer normalen lokalen Variablen (test =) zuweist. Chefkoch macht mit Ruby Scoping intern viel Magie.