为什么Chef会持续覆写服务器文件?如何关闭其自动修复功能?
Chef禁用自动覆写文件配置方案
Chef默认会在每次客户端运行时对齐服务端定义的资源状态,自动覆写不符合预期的文件是其核心设计能力,你可以通过以下配置禁用自动修复功能:
临时禁用单次运行的修改能力
运行Chef客户端时添加--why-run参数,只会检测配置差异,不会实际修改任何文件:
chef-client --why-run
如果需要完全停止Chef的定时自动运行,执行以下命令关闭服务并禁用开机自启:
- Systemd系统关闭服务:
systemctl stop chef-client - 禁用开机自启:
systemctl disable chef-client - 快速锁定Chef运行:执行
touch /etc/chef/chef_client.lock,Chef检测到该锁定文件会直接终止运行,不会执行任何变更操作
豁免特定文件不被覆写
如果只需要避免某几个文件被自动修改,不需要全局禁用Chef,可以修改对应cookbook中的资源定义,给file/template/cookbook_file资源添加action :nothing配置即可跳过该资源的执行:
template '/etc/your/config.conf' do source 'config_template.erb' action :nothing end
不需要修改cookbook的情况下,也可以通过节点属性override对应资源的执行逻辑,跳过指定文件的管控。
全局永久禁用自动修复
如果需要让Chef永久只做检测不做任何修改,编辑Chef客户端配置文件/etc/chef/client.rb,添加如下配置:
why_run true
保存后重启Chef服务即可生效,后续所有客户端运行都会进入模拟模式,不会修改服务器上的任何文件。
注意:需要恢复Chef管控能力时,删除锁定文件、移除why_run true配置、重启Chef服务即可恢复原有逻辑
内容的提问来源于stack exchange,提问作者Xander
相关产品推荐
相关产品推荐

