【问题标题】:Stop Chef Overwriting XML added after chef-client run停止厨师客户端运行后添加的厨师覆盖 XML
【发布时间】:2015-08-07 02:09:49
【问题描述】:

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

配方带有一个选项来创建一个锁定文件以防止任何更改,但我希望 Chef 能够在不删除 domain.xml 的部署部分的情况下运行和更新任何适当的更改。

我可以将部署添加到模板中,但 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>

有什么建议吗?谢谢。

【问题讨论】:

  • domain.xml 是在您的菜谱中创建的,还是在上游的菜谱中创建的?有一个action :create_if_missing 选项,在这里听起来很合理。

标签: chef-infra


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多