假设我有一些厨师代码,例如:
require 'mixlib/shellout'
yum_package 'somepackage'
myvar = Mixlib::ShellOut.new('/bin/somecommand').run_command.stdout.strip
在那里/bin/somecommand
,因为它是由安装还不存在somepackage
。由于这个原因,这将在配方编译时失败,但是显然会在收敛时起作用,前提是成功安装了软件包(如果没有成功,则显然配方无论如何都失败了)。如果将软件包安装为运行列表中的先前配方,这也将失败,因为它们都是预先编译在一起的。如何在食谱或运行列表自身安装的厨师食谱中包含内容?
这样的事情是不是在Cfengine的一个问题
—
犹
在没有洞察力的情况下
—
Tensibai'9
myvar
,没有真正的答案,通常我会避免在编译时使用来自外部命令的代码评估,除非非常有必要定义其他资源。简而言之,我会做ruby_block 'set myvar' { node.run_state['myvar'] = Mixlib::ShellOut.[...] }
@Tensibai
—
Gaius
node.run_state
正是我想要的-谢谢。做出答案,我会接受的!
那将不得不等到明天:)太难在电话上写出正确的答案了
—
Tensibai