我有这个运行列表: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/A
目录,该目录由recipe-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
是在{{1}}尚未运行时创建的?我该如何解决这个问题?
答案 0 :(得分:1)
不要将其作为ruby代码运行,请使用link资源创建符号链接。
link "/etc/A/file-2" do
to "/etc/A/file-1"
end
我非常确定您的Ruby代码已经在主厨运行的compilation phase期间执行,这就是为什么第二个配方中的代码似乎首先被执行的原因。