gpt4 book ai didi

chef-infra - Chef中的服务重启机制

转载 作者:行者123 更新时间:2023-12-04 03:04:24 26 4
gpt4 key购买 nike

我正在寻找关于厨师的重启机制如何在幕后工作的解释。我在网上找不到它的任何文档,并且在试图跟踪代码时遇到了困难(触发器是令人毛骨悚然的远距离 Action )。

我们具体看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] service resource谁的namenginx .

为此,service[nginx]必须已在您节点的 run_list 中声明在某一点。否则,Chef 会抛出错误。通常,这要么由用户在配方中手动完成,要么通过依赖项(例如, 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 收集的数据在运行开始时检测平台。平台确定后,厨师客户端会确定正确的供应商
  • 关于chef-infra - Chef中的服务重启机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310932/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com