我写了一个简单的厨师脚本。 / DirectoryPath中有一个文件夹t1。现在我在/ DirectoryPath / t5中创建一个新文件夹。但是listDirectory()方法提供相同的输出,就好像没有创建新目录一样。我和主厨11.4在MAC上。
我的脚本如下所示
recipe.rb
def listDirectory()
ls = `ls ~/Delete`
return ls
end
log(listDirectory())
directory '/DirectoryPath/t5' do
action :create
end
log(listDirectory())
输出
Recipe: test::default
* log[t1] action write[2015-11-03T15:02:47-08:00] INFO: Processing log[t1] action write
[2015-11-03T15:02:47-08:00] INFO: t1
* directory[/DirectoryPath/t5] action create[2015-11-03T15:02:47-08:00] INFO: Processing directory[/DirectoryPath/t5] action create (test::default line 10)
[2015-11-03T15:02:47-08:00] INFO: directory[/DirectoryPath/t5] created directory /DirectoryPath/t5
- create new directory /DirectoryPath/t5
* log[t1] action write[2015-11-03T15:02:47-08:00] INFO: Processing log[t1] action write
[2015-11-03T15:02:47-08:00] INFO: t1
根据我的说法,第二个日志语句应显示文件夹t1和t5,但它只显示t1。即使有一些变化,我能否知道返回相同结果的命令背后的原因是什么?我该如何避免呢?
答案 0 :(得分:3)
这是因为two phases of a chef-client run。
您的调用在编译阶段期间执行,执行directory
资源之前(在执行阶段中)。
你应该熟悉其他厨师的习语,比如libraries和definitions。你不应该直接在配方中嵌入ruby代码。
我进一步建议发布一个你想要实现的问题的新问题。很确定有一种厨师风格的解决方法。