【问题标题】:Chef wait for resource start厨师等待资源启动
【发布时间】:2017-09-29 08:16:54
【问题描述】:

我正在执行以下配方:

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 代码?

【问题讨论】:

  • 您可以在 grafana_datasource 中添加 retries 3retry_delay 10,如 here 所述

标签: chef-infra grafana


【解决方案1】:

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 

或类似的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2015-11-11
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多