Chef infra Chef-在不同节点上触发重新启动服务

Chef infra Chef-在不同节点上触发重新启动服务,chef-infra,chef-recipe,Chef Infra,Chef Recipe,我有一个主节点和一些应用程序的客户端节点,我想与厨师管理。它们都指向一个共享文件夹,其中包含有关所有客户端和主服务器的信息的配置文件。因此,每次安装客户端应用(在另一个客户端节点上)并将其主机名添加到该共享文件时,主节点上的应用都应该重新加载/重新启动 您知道如何从客户端节点重新启动主节点上的主应用程序吗?停止使用共享文件,这是您的体系结构中的一个SPOF,并且会遇到很多并发问题 厨师有一个特点,这是 考虑到这一点,我会在你的my_应用程序菜谱中加入两种食谱,分别命名为master.rb和cli

我有一个主节点和一些应用程序的客户端节点,我想与厨师管理。它们都指向一个共享文件夹,其中包含有关所有客户端和主服务器的信息的配置文件。因此,每次安装客户端应用(在另一个客户端节点上)并将其主机名添加到该共享文件时,主节点上的应用都应该重新加载/重新启动


您知道如何从客户端节点重新启动主节点上的主应用程序吗?

停止使用共享文件,这是您的体系结构中的一个SPOF,并且会遇到很多并发问题

厨师有一个特点,这是

考虑到这一点,我会在你的my_应用程序菜谱中加入两种食谱,分别命名为master.rb和client.rb

在client.rb中,除了安装客户端之外,还要向节点添加标记。(或使用角色定义哪些是客户端等)

标记(“我的应用程序客户端”)如果!标记?(“我的应用程序客户端”)
master=搜索(:节点,'tag:my\u app\u master')
从属服务器=搜索(:节点,“标记:我的应用程序\客户端”)
#将当前节点添加到从属节点列表中需要技巧的一行,因为在第一次运行中,它不会被chef索引。
奴隶[主人]
:slaves=>slaves
})
结束
在master.rb中,重复搜索和模板设置:

标记('my_app_master')如果!标记?(“我的应用程序主控程序”)
master=搜索(:节点,'tag:my\u app\u master')
从属服务器=搜索(:节点,“标记:我的应用程序\客户端”)
#添加当前节点作为主节点的复杂行,因为在第一次运行中,它不会被chef索引。
主节点=节点如果!主人,有吗?{| n | n['hostname']==节点['hostname']}
模板'/local/path/to/conffile'do
来源'config.erb'
变量({
:master=>master
:slaves=>slaves
})
通知:重新启动,“服务[我的应用程序服务]”,:立即
结束
在config.erb文件中,例如:

master_host: <%= @master['hostname'] %>
<%- @slaves.each_with_index do |s,i|
  slave_host<%= i %>: <%= s['hostname'] %>
<%- end %>
master\u主机: