
Zusammenfassung:
Ich habe ein Problem mit „Knife-Data-Bag aus Datei“, da Knife die aus einem Remote-Git-Repository heruntergeladene .json-Data-Bag-Datei nicht erkennt.
Hintergrund:
Ich versuche derzeit, von der Verwendung als Chef-Solo auf den Chef-Server umzusteigen, während ich die Kochbücher, Datentaschen und andere Chef-Informationen aus unserem Remote-Git-Repository verwende.
Ich habe gerade eine Kopie unseres Git-Repos heruntergeladen und den Cookbook-Pfad und den Databag-Pfad in knife.rb festgelegt. Ich habe auch die Cookbooks geladen, Anpassungen vorgenommen usw.
Einzelheiten:
Beim Versuch, unsere .json-Datentaschen mit „knife data bag add from file FOLDER FILE“ zu laden, scheint es zu funktionieren, bis ich „knife data bag list“ ausführe und es leer bleibt. Also habe ich beschlossen, am Ende die Bearbeitungsoption hinzuzufügen, um zu sehen, was geladen wird, falls dies der Fall ist. Dies ist der Fehler, den ich erhalte:
knife data bag from file local_settings test.json -e nano
ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json'
Die Data Bag-Datei existiert am richtigen Speicherort in einer getesteten, funktionierenden JSON-Datei. Manchmal erhalte ich auch die Fehlermeldung „Data Bag „local_settings“ konnte nicht geöffnet werden“.
Ich möchte den Data Bag-Pfad natürlich im entsprechenden Git-Repo-Ordner behalten, um Änderungen an einem zentraleren Ort (unserem Git-Repo, im Gegensatz zum Chef-Server) verfolgen zu können.
Alle Lösungen, Ratschläge oder Hinweise in die richtige Richtung sind willkommen.
Antwort1
Ich glaube nicht, dass die Verwendung dieser -e nano
Option zulässig ist knife data bag from file
(obwohl die Befehlszeilenhilfe etwas anderes andeutet), aber sie sollte einfach ignoriert werden. Dieser Fehler bedeutet, dass Knife die von Ihnen angegebene JSON-Datei nicht finden kann. Wenn Sie sagen, dass sich das Element am richtigen Ort befand, wo genau war es? Beachten Sie, dass Knife relativ zu Ihrem aktuellen Verzeichnis sucht, nicht zu Ihrem Chef-Repo.
Wenn dieses Problem behoben ist, stoßen Sie auf ein anderes: Sie müssen den Datenbeutel erstellen, bevor Sie ihm ein Element hinzufügen können. Es sollte in der knife data bag list
Ausgabe angezeigt werden, sobald es erstellt wurde:
$ knife data bag create local_settings
Created data_bag[local_settings]
$ knife data bag list
local_settings
Die Dokumentation zur „Messerdatentasche“ finden Sie hier:http://wiki.opscode.com/display/chef/Managing+Data+Bags+With+Knife
Antwort2
Ich tue das
knife data bag list
und es kommt nichts.
Dies bedeutet, dass der Datenbeutel local_settings
noch nicht erstellt wurde.
Es sollte also erstellt werden:
$> knife data bag create local_settings
Created data_bag[local_settings]
Dann sollte es in der Liste der Datenpakete des Servers erscheinen:
$> knife data bag list
local_settings
Dann kann die DataBag-Datei {{test.json}} hochgeladen werden.
Hier finden Sie auch eine nette Erklärung dessen, was hier eigentlich vor sich geht:[Link zum CHEF-Wiki].