0

私はこの実行リストを持っています: recipe-A, my-recipe.

recipe-A/etc/Aディレクトリを作成します。

my-recipeこれらのコードがあります:

...
// create '/etc/A/file-1'
...
File.symlink('/etc/A/file-1', '/etc/A/file-2')
...

したがって、実行すると、によって作成されたディレクトリが既にmy-recipe存在するはずです。しかし、シェフの実行の最初にこのエラーが発生しました:/etc/Arecipe-A

================================================================================
Recipe Compile Error in ...
================================================================================

Errno::ENOENT
-------------
No such file or directory - (/etc/A/file-1, /etc/A/file-2)

recipe-Aこのエラー メッセージが表示された場合、実行されていないと確信しています。しかし、recipe-A最初に実行することになっていませんか?Chefが実行されていないときに/etc/Aによって作成された の存在をチェックするのはなぜですか? recipe-Aどうすればこれを解決できますか?

4

1 に答える 1

1

ruby コードとして実行せず、リンクリソースを使用してシンボリック リンクを作成します。

link "/etc/A/file-2" do
  to "/etc/A/file-1"
end

Ruby コードは、chef 実行のコンパイル段階で既に実行されていると確信しています。そのため、2 番目のレシピのコードが最初に実行されるようです。

于 2013-10-16T13:23:01.257 に答える