11

我想运行一个网络服务并等待几秒钟后得到结果。

在 puppet 中实现等待的最佳方法是什么?

4

3 回答 3

16

您可以将 linux sleep 命令与 exec 一起使用,并将其暂存为在 Web 服务之后运行。就像是 :

exec { 'wait_for_my_web_service' :
  require => Service["my_web_service"],
  command => "sleep 10 && /run/my/command/to/get/results/from/the/web/service",
  path => "/usr/bin:/bin",
}
于 2013-01-23T03:00:14.173 回答
0

我对仅本地等待 + 可配置重试的看法。

define wait_for_port ( $protocol = 'tcp', $retry = 10 ) {
  $port = $title
  exec { "wait-for-port${port}":
    command  => "until fuser ${port}/${protocol}; do i=\$[i+1]; [ \$i -gt ${retry} ] && break || sleep 1; done",
    provider => 'shell',
  }
}

wait_for_port { '3000': }
于 2018-01-23T06:58:24.763 回答
0

我有一个执行 DSC 资源的类,但需要等待 20 秒才能执行它。因此,我在 dsc 资源之前使用了一个依赖于 Powershell 的 exec 资源:

$command = 'Start-Sleep -Seconds 20'
exec { 'wait_time':
    command   => $command,
    provider  => powershell,
    timeout   => 0,
    tries     => 3,
    try_sleep => 10
}

当然,您可以省略或更改 try 和 try_sleep 参数。

于 2021-12-03T14:46:44.427 回答