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
非常感谢任何帮助。
答案 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,
}