2017-10-02 3 views
0

Umgebungen eignen sich hervorragend zum Überschreiben von Standardverhalten, und Databags eignen sich hervorragend, um Daten aus Kochbüchern zu abstrahieren und so allgemein wie möglich zu machen.Kann eine Chefumgebung json verwendet werden, um einen Datenbeutel zu ersetzen?

Ich habe eine Umgebung JSON-Datei pro Phase der Entwicklung: dev, qa, staging, und ich habe Daten Taschen, die ich basierend auf der Umgebung ändern kann. Es scheint überflüssig zu sein, diese Dinge in mehr als einem Verzeichnis zu definieren, besonders weil ich einen Koch in local mode verwende.

Gibt es eine Möglichkeit, benutzerdefinierte Eigenschaften in der Chef-Umgebung JSON-Datei zu definieren? Wenn ja: Wie kann ich auf sie in den Rezepten zugreifen?

Hinweis: Ich bin bereits vertraut mit der override_attributes Eigenschaft der Umgebung json. Ich frage mich über benutzerdefinierte JSON, wie man darauf zugreifen, oder möglicherweise eine bessere Lösung?

Für Beispiel

{ 
    "name": "dev", 
    "default_attributes": {}, 
    "json_class": "Chef::Environment", 
    "my_custom_object" : {"key1":"value1", ...} 
    "chef_type": "environment" 
} 

Antwort

1

Nein, können Sie das nicht tun. Das Schema für Chef-Objekte ist klein (d. H. Nur welche Schlüssel der obersten Ebene zulässig sind), aber behoben. Die einzigen Orte, an denen Sie beliebige Daten an eine Umgebung anhängen, sind als Knotenattribute oder (technisch, aber wahrscheinlich tun Sie dies nicht) als codierte Daten in der Beschreibungszeichenfolge. Das heißt, Knotenattribute tun das, was du beschreibst, daher bin ich mir nicht ganz sicher, warum du denkst, dass das nicht die Lösung ist (wie meine andere, gelöschte Antwort erwähnt). Ich habe Fragen zur Verwendung von Knotenattributen. Ich würde diese Frage stattdessen stellen oder auf Slack fragen:

Verwandte Themen