我有一个第三方perl脚本,我需要用puppet运行。在脚本中有一些命令可以使用以下perl语句创建目录:
system("mkdir -p /tmp/agent") && die "failed to create agent dir";
我可以使用root用户手动运行脚本而不会有任何问题。但是,当我用puppet运行脚本时:
exec {'install agent':
command => "perl /tmp/install_agent.pl",
creates => '/tmp/agent/agent',
path => '/usr/bin',
}
我收到以下错误:
Error: perl /tmp/install_agent.pl returned 2 instead of one of [0]
当我尝试捕获系统调用的返回值时,我得到了-1。随着更多测试,似乎所有系统调用都失败了-1。
有什么建议吗?谢谢!
答案 0 :(得分:0)
我怀疑当exec运行时/tmp/install_agent.pl不存在。就像测试一样,我运行了'perl /nonexistant.file',返回码为2。
您创建文件的Watever资源需要先运行。所以,如果它是文件资源:
file {'/tmp/install_agent':
ensure => file,
content => 'system("mkdir -p /tmp/agent") && die "failed to create agent dir";'
}
exec {'install agent':
command => "perl /tmp/install_agent.pl",
creates => '/tmp/agent/agent',
path => '/usr/bin',
require => File['/tmp/install_agent.pl'],
}