Chef infra 厨师长-使用Subversion资源区分/通知
我试图找到一种方法,使用厨师食谱中的Subversion资源将现有文件与存储库中的HEAD修订版进行比较 现在看起来Subversion资源将只导出文件,覆盖现有文件。这对我不起作用,因为我想将其用于服务配置文件,如果文件不同,则发出重新启动 目前,我正在将当前版本从repo导出到临时文件。然后我通知bash资源来区分文件-如果不同,则替换现有文件并重新启动服务。这是一个很大的额外开销,只是为了复制现有资源(即cookbook_文件和模板)的功能 注意:我不想每次有变化时都要修改一个文件然后上传食谱。我需要其他管理员能够修改配置文件,而不需要深入的厨师知识Chef infra 厨师长-使用Subversion资源区分/通知,chef-infra,Chef Infra,我试图找到一种方法,使用厨师食谱中的Subversion资源将现有文件与存储库中的HEAD修订版进行比较 现在看起来Subversion资源将只导出文件,覆盖现有文件。这对我不起作用,因为我想将其用于服务配置文件,如果文件不同,则发出重新启动 目前,我正在将当前版本从repo导出到临时文件。然后我通知bash资源来区分文件-如果不同,则替换现有文件并重新启动服务。这是一个很大的额外开销,只是为了复制现有资源(即cookbook_文件和模板)的功能 注意:我不想每次有变化时都要修改一个文件然后上传
使用Subversion资源是否可能做到这一点?如果没有,我是否可以使用其他资源/方法来执行此操作?我不使用subversion,请提前道歉 chef中的资源支持4个操作。文档并不完全清楚,但我想知道当代码更改时,是否可以使用其中一个来触发:
subversion "My Project" do
repository "http://svn.myorg/repos/myproject/trunk"
revision "HEAD"
destination "/opt/myproject"
action :checkout
notifies :restart, "service[helloworld]", :delayed
end
所以在做了一段时间之后,我发现我不能使用subversion资源来做这个。subversion资源将始终触发通知或覆盖文件 我必须使用远程文件资源,使用SVN HTTP凭据 我的解决方案如下所示:
execute "service_restart" do
command "restorecon /etc/path/configFile; service serviceName restart"
action :nothing
end
remote_file "/etc/path/configFile" do
source "http://svnUser:svnPath@subversion.domain.net/repo/path/configFile"
owner "root"
group "root"
mode 0444
notifies :run, "execute[service_restart]", :immediately
end
注意:我知道这不是重新启动服务的最佳方式,但我必须为这项服务这样做。不过,使用远程文件资源的一般想法很重要。您找到解决此问题的方法了吗?回答你自己的问题没关系。请不要忘记将答案标记为正确!:)