Puppet没有执行命令。陷入困境并暂停

时间:2016-05-11 13:02:17

标签: linux puppet pm2

exec { "stop old application instance":
    cwd => "${install_dir}",
    path => ['/usr/bin','/bin','/usr/sbin','/sbin', '/bin/unlink', '/usr/local', '/usr/local/bin/'],
    onlyif => "test -e '${install_dir}/${app_package_dir}/processes.json'",
    group => 0,
    user => 'root',
    command => "pm2 delete /var/lib/application_folder/processes.json"
} 

Puppet陷入困境,无法执行命令。不理解原因。错误日志如下所示

Error: Command exceeded timeout
Wrapped exception:
execution expired
Error: /Stage[main]/application::Install/Exec[stop old application instance]/returns: change from notrun to 0 failed: Command exceeded timeout

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

https://ask.puppet.com/question/1308/command-exceeded-timeout/

默认情况下,Puppet希望您的命令在300秒或更短时间内完成运行。然后它放弃等待并假设命令失败。

我对pm2一无所知,可以帮助你找出你的命令花了这么长时间的原因。但如果这是正常的,那么上面的链接建议你添加

timeout => 1800,

你的傀儡定义。

答案 1 :(得分:0)

我建议手动查找pm2命令的来源($ which pm2),然后使用命令的完整路径而不是使用path属性。像这样:

exec { "stop old application instance":
    cwd => "${install_dir}",
    onlyif => "test -e '${install_dir}/${app_package_dir}/processes.json'",
    user => 'root',
    command => "/usr/bin/pm2 delete /var/lib/application_folder/processes.json",
    logoutput => 'onfailure',
}

注意logoutput属性,只有在出现故障时才能看到命令的输出。我认为你不需要指定小组

答案 2 :(得分:0)

您可以尝试将以下内容放在人偶全局脚本文件中:

Exec {
timeout => 0,
}