chef-solo 函数中的命令执行
Command execution in functions in chef-solo
我写了一个简单的厨师脚本。 /DirectoryPath 中有一个文件夹 t1。现在我正在 /DirectoryPath/t5 中创建一个新文件夹。但是 listDirectory() 方法给出相同的输出,就好像没有创建新目录一样。我在 MAC 和厨师 11.4
我的脚本如下
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。我能知道命令返回相同结果的原因是什么,即使有一些变化。我该如何避免呢?
这是因为two phases of a chef-client run。
您的调用在 编译阶段 期间执行,在执行 directory
资源之前(在 执行阶段 中)。
您应该熟悉其他厨师的惯用语,例如 libraries and definitions。你不应该直接在食谱中嵌入 ruby 代码。
我进一步向 post 建议一个新问题,其中包含您想要实现的问题。很确定有一种厨师风格的方法可以解决它。
我写了一个简单的厨师脚本。 /DirectoryPath 中有一个文件夹 t1。现在我正在 /DirectoryPath/t5 中创建一个新文件夹。但是 listDirectory() 方法给出相同的输出,就好像没有创建新目录一样。我在 MAC 和厨师 11.4
我的脚本如下
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。我能知道命令返回相同结果的原因是什么,即使有一些变化。我该如何避免呢?
这是因为two phases of a chef-client run。
您的调用在 编译阶段 期间执行,在执行 directory
资源之前(在 执行阶段 中)。
您应该熟悉其他厨师的惯用语,例如 libraries and definitions。你不应该直接在食谱中嵌入 ruby 代码。
我进一步向 post 建议一个新问题,其中包含您想要实现的问题。很确定有一种厨师风格的方法可以解决它。