Wso2 找不到通过puppet exec命令执行的服务器进程

Wso2 找不到通过puppet exec命令执行的服务器进程,wso2,puppet,Wso2,Puppet,我通过puppet master在代理机器中启动服务器。这是我的exec命令,我使用它注意:这叫做使用收集器 Change_config::Fill_template<| |> -> Exec<| title == "strating" |> exec { "strating": user => 'root', environment => "JAVA_HOME=/home/ubuntu/tools/jdk1.6.0_45", path

我通过puppet master在代理机器中启动服务器。这是我的exec命令,我使用它注意:这叫做使用收集器

Change_config::Fill_template<| |> -> Exec<| title == "strating" |>

exec { "strating":
user        => 'root',
environment => "JAVA_HOME=/home/ubuntu/tools/jdk1.6.0_45",
path        => $command_path,
command     => "sh ${agentLocation}/${product_pack}/bin/wso2server.sh ${serverOptions}",
logoutput => true,
timeout => 3600,
}
但是当我使用netstat-ntlp检查端口时,它不会显示端口。普通用户和root用户。除了日志之外,没有服务器的迹象。 最后,我在我的代理内再次手动启动服务器,然后我可以正常观察端口。这应该会出现异常,因为如果puppet成功启动服务器,我将尝试使用现有端口。但它没有给出任何例外

这是一种奇怪的情况。我不明白为什么我看不到通过puppet启动的服务器证据。你能为我提供这种行为的线索吗


注意:当我在代理节点内手动运行'puppet agent-test'时,它会启动服务器,我可以看到端口绑定。我怀疑问题出在代理在启动守护进程中获取目录时。

很可能,代理在Exec超时过期时正在终止服务器。这样做的力度可能足够大,服务器不会记录关闭。之后可以再次手动启动服务器,因为此时服务器不再运行

您应该改为通过服务资源管理服务。为此,最好为您的环境创建一个适当的服务控制脚本,但服务资源类型足够灵活,可以处理临时服务(如您当前的服务)的作业。像这样的东西可能会做到:

service { 'wso2service':
  ensure     => 'running',
  hasstatus  => false,
  hasrestart => false,
  start      => "/bin/sh ${agentLocation}/${product_pack}/bin/wso2server.sh ${serverOptions}",
  stop       => "/usr/bin/killall wso2server.sh",
  pattern    => 'wso2server\.sh'
}
但实际上,创建一个合适的initscript,或者系统使用的任何initscript模拟。然后你可以把它简化为

service { 'wso2service':
  ensure     => 'running',
}
service { 'wso2service':
  ensure     => 'running',
}