
まとめ:
「knife data bag from file」で問題が発生しています。knife はリモート git リポジトリから取得された .json データ バッグ ファイルを認識しません。
背景:
現在、リモート Git リポジトリのクックブック、データ バッグ、その他の Chef 情報を使用しながら、chef-solo の使用から Chef Server への移行を試みています。
現在、git リポジトリのコピーを取得し、knife.rb でクックブック パスとデータ バッグ パスを設定しました。また、クックブックをロードし、調整などを行いました。
詳細:
「knife data bag add from file FOLDER FILE」を実行して .json データ バッグをロードしようとすると、「knife data bag list」を実行するまでは機能しているように見えますが、何も表示されません。そこで、最後に編集オプションを追加して、ロードされているものを確認することにしました。次のエラーが表示されます。
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'
データ バッグ ファイルは、適切な場所の、テスト済みの動作する json ファイルに存在します。また、「データ バッグ "local_settings" を開けませんでした」というエラーが表示されることもあります。
当然のことながら、データ バッグ パスを適切な git リポジトリ フォルダー内に保持して、より集中化された場所 (Chef サーバーではなく、当社の git リポジトリ) で変更を追跡できるようにしたいと考えています。
解決策、アドバイス、正しい方向への指針があれば、ぜひ教えてください。
答え1
-e nano
オプションを使用するのは有効ではないと思いますknife data bag from file
(ただし、コマンドライン ヘルプではそうではないと示されています)。無視してください。このエラーは、knife が指定した json ファイルを見つけられないことを意味します。アイテムが適切な場所にあったとおっしゃっていますが、正確にはどこにあったのでしょうか。knife は chef-repo ではなく、現在のディレクトリを基準にして検索することに注意してください。
この問題を修正すると、別の問題に遭遇します。データ バッグにアイテムを追加する前に、データ バッグを作成する必要があります。データ バッグはknife data bag list
作成されるとすぐに出力に表示されます。
$ knife data bag create local_settings
Created data_bag[local_settings]
$ knife data bag list
local_settings
「ナイフ データ バッグ」のドキュメントは、次の場所にあります。http://wiki.opscode.com/display/chef/Managing+Data+Bags+With+Knife
答え2
そうすると
knife data bag list
、何も表示されません。
データバッグlocal_settings
がまだ作成されていないことを意味します。
したがって、次のように作成する必要があります。
$> knife data bag create local_settings
Created data_bag[local_settings]
すると、サーバーのデータバッグがリストに表示されるはずです:
$> knife data bag list
local_settings
その後、{{test.json}} データ バッグ ファイルをアップロードできます。
また、実際に何が起こっているかについてのわかりやすい説明がここにあります:[CHEF wiki のリンク]。