使用 remote_file 时如何检测文件更新
How to detect file update when using remote_file
我在 for 循环中使用 remote_file 来遍历部署文件(在节点属性中指定)。我验证给定的校验和(sha256sum)以查看现有文件是否相同;如果没有,我会更新它们;如果相同,它只是跳过。
我需要知道配方中是否有任何文件已更新,以便在部署目录下的任何文件发生更改时重新启动应用程序服务器。
是否有任何我可以使用的默认属性(告诉所有文件更新都被跳过)或者完成它的最佳方法是什么?
谢谢,
node['app']['deployments'].each do |file, value|
remote_file "/apps/deployments/#{value['file-name']}" do
source "file:///tmp/deployments/#{value['file-name']}"
checksum value['check-sum']
end
end
Chef中有notifications的概念,在这种情况下对你有帮助:
node['app']['deployments'].each do |file, value|
remote_file "/apps/deployments/#{value['file-name']}" do
source "file:///tmp/deployments/#{value['file-name']}"
checksum value['check-sum']
notifies :restart, 'service[appserver]'
end
end
service "appserver"
只要您不向 notifies
提供 :immediately
参数,chef-client 就会排队所有通知并执行它们(也就是重新启动服务)一次 大厨的最后运行.
我在 for 循环中使用 remote_file 来遍历部署文件(在节点属性中指定)。我验证给定的校验和(sha256sum)以查看现有文件是否相同;如果没有,我会更新它们;如果相同,它只是跳过。
我需要知道配方中是否有任何文件已更新,以便在部署目录下的任何文件发生更改时重新启动应用程序服务器。
是否有任何我可以使用的默认属性(告诉所有文件更新都被跳过)或者完成它的最佳方法是什么?
谢谢,
node['app']['deployments'].each do |file, value|
remote_file "/apps/deployments/#{value['file-name']}" do
source "file:///tmp/deployments/#{value['file-name']}"
checksum value['check-sum']
end
end
Chef中有notifications的概念,在这种情况下对你有帮助:
node['app']['deployments'].each do |file, value|
remote_file "/apps/deployments/#{value['file-name']}" do
source "file:///tmp/deployments/#{value['file-name']}"
checksum value['check-sum']
notifies :restart, 'service[appserver]'
end
end
service "appserver"
只要您不向 notifies
提供 :immediately
参数,chef-client 就会排队所有通知并执行它们(也就是重新启动服务)一次 大厨的最后运行.