厨师的服务重启机制
我正在寻找关于厨师的重新启动机制如何在幕后工作的解释。 我在网上找不到任何文档,并且我试图追踪代码(触发器是远距离行动)。
让我们来看看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]
:reload
。 service[nginx]
是一个name
nginx
的service
资源。
为此, service[nginx]
必须在节点的run_list
中声明。 否则,厨师会抛出一个错误。 通常这可以由用户在配方中手动完成,也可以通过依赖关系(例如application
或nginx
食谱)完成。
Chef如何运行reload
命令取决于service[nginx]
资源是如何声明的,但通常取决于底层操作系统(这是使用诸如此类的工具的优点之一 - 它将许多较低级别的细节提取出来从你,并允许你在多个平台上使用相同的代码)。
在service
文档的语法部分,您可以找到以下内容:
Chef::Provider::Service::Init
, Chef::Provider::Service::Init::Debian
, Chef::Provider::Service::Upstart
, Chef::Provider::Service::Init::Freebsd
, Chef::Provider::Service::Init::Gentoo
, Chef::Provider::Service::Init::Redhat
, Chef::Provider::Service::Solaris
, Chef::Provider::Service::Windows
或Chef::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?