厨师等待资源开始

时间:2017-09-29 08:16:55

标签: chef grafana

我执行以下食谱:

include_recipe 'grafana::default'

grafana_datasource 'InfluxDB' do
  source(
    type: 'influxdb',
    url: 'http://localhost:8086',
    access: 'proxy',
    database: 'living',
    isdefault: true
  )
  action :create
end

grafana :: default安装grafana服务,然后grafana_datasource在该grafana上安装新的数据源。问题是当我尝试执行grafana_datasource并且崩溃时,grafana仍未启动。

如何在服务完全启动后订阅grafana服务并执行grafana_datasource代码?

1 个答案:

答案 0 :(得分:0)

Chef的具体内容没有。您可以使用Tensibai提到的通用retries,或者您可以使用等待服务启动并响应的ruby_block资源。大多数服务层(Upstart,systemd等)是异步的,因此Chef的service资源(以及相关的东西)将在发送启动/重启命令时阻塞,但这并不意味着服务实际上是在那之后开始运行。这通常采用以下形式:

ruby_block 'wait_until_up' do
  block do
    while true
      if try_to_connect()
        break
      end
      sleep 10
    end
  end
end 

或类似的东西。