我执行以下食谱:
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代码?
答案 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
或类似的东西。