我在用着模板生成文件。当服务器上的应用程序启动时,它会重写文件 - 内容不会改变,但 Chef 会认为它已更改,并在下次运行时也会重写它。在日志中,它会no diff
在template
处理过程中显示,然后触发通知程序。
我该怎么做才能让 Chef 按内容比较文件,以便它不会在没有真正原因的情况下通知服务重新启动。
答案1
调试日志:
DEBUG:calculating checksum of file1 to compare with c24f2aa74f9665cb944ab72ed34571367a0de38e10432675d3c5e8610ad9d046
DEBUG: running: diff -u file1 file2
因此,即使 diff(在 chef 中)返回,校验和也不相等(无差异)。然后我尝试diff -u file1 file2
在终端运行,结果:
\ 文件末尾没有换行符
因此文件大小的差异是 1 个字节。
答案2
模板资源不仅管理内容,还管理文件的group
、owner
和mode
。如果内容没有改变(如您所注意到的),那么您将需要仔细查看其他属性,因为其中任何一个属性的改变仍会触发通知。