厨师的服务重启机制

我正在寻找关于厨师的重新启动机制如何在幕后工作的解释。 我在网上找不到任何文档,并且我试图追踪代码(触发器是远距离行动)。

让我们来看看nginx的具体情况,并假设我们使用的是厨师服务器,而不是chef-solo (我不知道这是否有所作为)。

我有这个(例如)在一个配方:

template '/etc/nginx/nginx.conf' do
  source 'nginx.cfg.erb'
  owner "root"
  group "root"
  mode 00755
  notifies :reload, "service[nginx]", :delayed
end

notifies :reload位意味着它会触发重新加载,并且:delayed意味着它会在chef-client运行结束时发生。 这在幕后如何工作? 执行线程后遇到问题。

某处chef-client必须运行service nginx reload或沿着这些线路。 定义在哪里以及如何定义?


notifies发送另一个Chef资源的通知来执行某些操作。

在你的例子中,它告诉资源service[nginx] :reloadservice[nginx]是一个name nginxservice资源。

为此, service[nginx]必须在节点的run_list中声明。 否则,厨师会抛出一个错误。 通常这可以由用户在配方中手动完成,也可以通过依赖关系(例如applicationnginx食谱)完成。

Chef如何运行reload命令取决于service[nginx]资源是如何声明的,但通常取决于底层操作系统(这是使用诸如此类的工具的优点之一 - 它将许多较低级别的细节提取出来从你,并允许你在多个平台上使用相同的代码)。

service文档的语法部分,您可以找到以下内容:

  • 服务告诉主厨客户在厨师 - 客户端运行期间使用以下提供者之一: Chef::Provider::Service::InitChef::Provider::Service::Init::DebianChef::Provider::Service::UpstartChef::Provider::Service::Init::FreebsdChef::Provider::Service::Init::GentooChef::Provider::Service::Init::RedhatChef::Provider::Service::SolarisChef::Provider::Service::WindowsChef::Provider::Service::Macosx 。 主厨客户将根据Ohai收集的数据在运行开始时检测平台。 平台确定后,厨师 - 客户将确定正确的提供者

  • 该功能在厨师doco中进行了介绍。

    如果配置文件的内容发生更改,将触发nginx服务的重新加载。 “延迟”设置意味着重新加载操作发生在主厨运行结束时。 这个想法是,厨师可能会修改多个配置文件,并且最终需要单个重新加载,而不是每个更改后的文件(这是“立即”选项)。

    链接地址: http://www.djcxy.com/p/78301.html

    上一篇: Service restart mechanism in chef

    下一篇: Is there a way to programmatically scroll a scroll view to a specific edit text?