停止厨师覆盖在厨师 - 客户端运行后添加的XML

时间:2015-07-27 05:44:23

标签: chef

我有一个控制Wildflys domain.xml的Wildfly主厨配方。但是当我们将WAR部署到Wildfly时,它会将部署部分添加并填充到domain.xml。当然,当它再次运行时,Chef会删除此部分,因为它与模板不匹配。

该配方附带了一个创建锁文件以防止任何更改的选项,但我希望Chef能够在不删除domain.xml的deployments部分的情况下运行和更新任何正确的更改。

我可以将部署添加到模板中,但是sha1值会随着每个新部署而变化,id而不是Chef会找出现有文件中的内容并保留它。部署部分如下所示:

<deployments>
    <deployment name="healthcheck.war" runtime-name="healthcheck.war">
        <content sha1="2a833c924625234ad160cb24c6f4b74007ad0815"/>
    </deployment>
    <deployment name="jolokia.war" runtime-name="jolokia.war">
        <content sha1="c1261964977a401aa45c180037c2965983b7e22a"/>
    </deployment>
    ...
</deployments>

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

使用

保护资源调用
template <your template> do
  ...
  not_if File.exist?(<path to .xml file>).to_s
end

这样一来,如果该路径上存在一个文件,它甚至不会评估它们是否不同,它只会跳过模板块。

编辑:not_if guards需要一个字符串而不是一个布尔值,代码被修复以反映这一点。