Chef infra Chef守护进程每30分钟运行一次
我知道Chef是基于pull的,因为它检测配方中的任何更改,并使用Chef客户端安装更改。 我们使用chef来启动EC2实例,但是chef客户端作为守护进程每30分钟运行一次,并再次运行所有的菜谱,从而对某些服务造成不必要的更改。 我想知道有哪些选项可以改变这一点,并按需运行chef客户端 以下是我到目前为止想到的一些选择Chef infra Chef守护进程每30分钟运行一次,chef-infra,Chef Infra,我知道Chef是基于pull的,因为它检测配方中的任何更改,并使用Chef客户端安装更改。 我们使用chef来启动EC2实例,但是chef客户端作为守护进程每30分钟运行一次,并再次运行所有的菜谱,从而对某些服务造成不必要的更改。 我想知道有哪些选项可以改变这一点,并按需运行chef客户端 以下是我到目前为止想到的一些选择 将chef client cookbook上的间隔时间更改为非常高的时间,以便守护进程不会经常运行 部署EC2实例后,杀死chef守护进程ssh,甚至可能杀死chef配方 另
service 'apache2' do
action [:enable, :start]
end
template '/etc/apache2/httpd.conf' do
action :create
[...]
notifies, :restart, 'service[apache2]' #this notification will launch, only if the file has changed
end
您还可以通过运行chef-client--once
来禁用chef-client守护程序。这样,chef将配置节点并从cron中删除self。因此,在未来,它将仅在需要时手动运行
但更大的问题是,实际上,您的chef客户端每次运行都会导致您的某些服务发生更改。您应该首先解决它。我同意Draco关于修复潜在问题的说法,但是如果您想阻止chef client每30分钟运行一次,您应该能够从运行列表中删除chef client::service recipe。请参阅。如果您是从Chef数据包构建配置文件,则需要对搜索结果进行排序,因为这些结果不会在不同的运行中以相同的顺序返回。如果不对结果进行排序,则会出现Apache服务,这些服务会在没有明显原因的情况下频繁重启
确保您的chef客户端运行具有相同数据的幂等性。非常强调这一点。谢谢Draco。你知道更大的问题是什么,它需要解决。但在解决这个问题之前,我们需要在EC2实例上禁用客户端。使用--once选项需要更改配方中的所有模板?我在前面的评论中指的是烹饪书。它不需要更改烹饪书。只需登录到EC2节点并运行
sudochef客户端--一次
。或sudo服务厨师客户端站
。或者创建停止服务的配方:服务“厨师客户端”{action[:stop,:disable]}
。有很多可能性。我不理解--once
选项。chef client使用--daemonize
选项进行后台监控,但对我来说,将其与--once
组合使用与删除两者相同。清空该节点的运行列表。让chef client每30分钟运行一次,不做任何事情,并“按需”编辑和更新运行列表。