perl脚本中的系统调用在使用puppet运行时返回-1

时间:2014-01-20 21:35:56

标签: perl puppet

我有一个第三方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。

有什么建议吗?谢谢!

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'],
}