2016-08-08 43 views
1

Ich habe eine einfache Attribute Datei: attributes/default.rb.kitchen.yml Attribute nicht überschreiben Standardwerte - Chef 12.12 - Küche 1.10

default['simpleattr'] = 'file value' 

Und innen kitchen.yml, ich

suites: 
    - name: default 
    run_list: 
     - recipe[simple::default] 
    attributes: 
    simpleattr: 'value from kitchen' 
    simple: 
     simpleattr: 'value from kitchen' 

Im Innern des Rezepts, das tue ich:

log "default['simpleattr']: "+node.default['simpleattr'] 

Und ich bekomme immer 'file value' anstatt 'value from kitchen' als Ausgabe.

Ich möchte den Wert in Tests überschreiben.

+1

Um den Wert zuzugreifen, die Sie in der Testküche definieren, würden Sie müssen auf 'node ['simple'] ['simpleattr']' zugreifen. Greifen Sie nicht über 'node.default', sondern' node ['simpleattr'] auf Attribute zu. In der YAML fehlt den Zeilen unter der Zeile "attributes" eine Leerstelle. Sie können überprüfen, ob der YAML korrekt über "Kitchen Diagnose" analysiert wird. – StephenKing

+1

Ich hoffe, ich habe die Wurzel des Problems (siehe meine Antwort) – StephenKing

+1

Sie waren glücklich zu ignorieren alles, was ich in meinem Kommentar geschrieben .. – StephenKing

Antwort

4

Zugriff auf Knotenwerte nicht über node.default[], sondern stattdessen node[]. Chef's attribute hierarchy berechnet automatisch die Werte entsprechend seiner Rangstufen.

Ich habe Ihr Problem reproduziert und hochgeladen here on Github. Die solution ist wie auch vorher in meinem Kommentar beschrieben. Verwenden Sie keine

node.default['simpleattr'] 

sondern

node['simpleattr'] 

Dann ist alles wie erwartet und der Ausgang ist

Recipe: simple::default 
    * log[default['simpleattr']: value from kitchen] action write