在chef-solo

时间:2015-11-03 23:11:30

标签: chef chef-recipe chef-solo

我写了一个简单的厨师脚本。 / 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。即使有一些变化,我能否知道返回相同结果的命令背后的原因是什么?我该如何避免呢?

1 个答案:

答案 0 :(得分:3)

这是因为two phases of a chef-client run

您的调用在编译阶段期间执行,执行directory资源之前(在执行阶段中)。

你应该熟悉其他厨师的习语,比如librariesdefinitions。你不应该直接在配方中嵌入ruby代码。

我进一步建议发布一个你想要实现的问题的新问题。很确定有一种厨师风格的解决方法。