Chef infra 如何在chef中处理冲突文件?

Chef infra 如何在chef中处理冲突文件?,chef-infra,Chef Infra,我有一个配方,它包含在mysql::server上,但替换了我的.cnf文件。结果是,在每次chef客户端运行时,它都会重新启动mysql服务器,因为my.cnf在chef客户端运行期间被替换了两次。如何避免这种情况 更新:是的,这是因为mysql::server部署了my.cnf,然后我的配方覆盖了它。问题是如何通过mysql::server禁用my.cnf的部署,而不通过仅使用包装器cookbook中的更改来禁用或修改此cookbook。直接修改社区烹饪书被认为是一种不好的做法,因此肯定有一

我有一个配方,它包含在mysql::server上,但替换了我的.cnf文件。结果是,在每次chef客户端运行时,它都会重新启动mysql服务器,因为my.cnf在chef客户端运行期间被替换了两次。如何避免这种情况


更新:是的,这是因为mysql::server部署了my.cnf,然后我的配方覆盖了它。问题是如何通过mysql::server禁用my.cnf的部署,而不通过仅使用包装器cookbook中的更改来禁用或修改此cookbook。直接修改社区烹饪书被认为是一种不好的做法,因此肯定有一种方法可以通过包装烹饪书来实现所需的行为。

听上去,您已经为my.cnf声明了两个模板资源,其中一个需要禁用

如果没有这些配方,我只能猜测,但是当您包括mysql::server配方时,通常会发生这种情况,它有自己的my.cnf模板资源,然后您为my.cnf指定自己的模板资源

MySQL cookbook允许您使用MySQL\u config资源定义额外的配置

mysql_服务“foo”do 端口“3306” 版本“5.5” 初始\u根\u密码“更改我” 操作[:创建,:开始] 终止 mysql\u配置“foo”do 来源'my_extra_settings.erb' 通知:重新启动“mysql\u服务[foo]” 行动:创建 终止
您需要在您的食谱中创建my_extra_settings.erb

为什么它被替换了两次?当然,答案是确保只有一个资源声明涉及my.cnf?@MarkO'Connor链接到的官方mysql食谱不包括mysql::server食谱事实上,它根本没有食谱。您最好的选择可能是切换到该模式,并在包装器中声明mysql_服务和mysql_配置资源。我认为mysql\u配置资源可以解决我的问题。但是有一些通用的方法来处理类似的情况吗?mysql的食谱在v6.0中有一个主要的更新-他们用LWRPs替换了所有的食谱