Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 使用chef客户端维护文件内容_Chef Infra_Chef Recipe - Fatal编程技术网

Chef infra 使用chef客户端维护文件内容

Chef infra 使用chef客户端维护文件内容,chef-infra,chef-recipe,Chef Infra,Chef Recipe,是否可以使用chef recipe维护文件中的特定行 示例:fileA.txt foo foofoofoo This is important content This is important content fooo foofoofoof foooooofoofofofof 在上面的例子中,我有一个名字fileA.txt,其中有两行很重要,对我来说非常重要。如果有人只更改文件中的这两行。下一次运行chef客户端时,会将其恢复到相同的状态 但是,如果有人改变了其他对我来说不重要的行,它将不会

是否可以使用chef recipe维护文件中的特定行

示例:fileA.txt

foo
foofoofoo
This is important content
This is important content
fooo
foofoofoof
foooooofoofofofof
在上面的例子中,我有一个名字fileA.txt,其中有两行很重要,对我来说非常重要。如果有人只更改文件中的这两行。下一次运行chef客户端时,会将其恢复到相同的状态

但是,如果有人改变了其他对我来说不重要的行,它将不会恢复

file '/tmp/fileA.txt' do
   content 'foo
   foofoofoo
   This is important content
   This is important content
   fooo
   foofoofoo
   foooooofoofofofof'
   action :create
end
上面的代码还还原了我不想要的其他行。。
有什么解决办法吗?

这不是厨师的工作。它使用文件资源管理文件的全部内容。如果您想要一个文件处理资源来执行此操作,则需要创建自己的自定义资源。然而,考虑到像那样的文件操作通常是如何工作的,这将是非常特定于文件内容的。您确实需要鼓励每个编辑文件的人都以同样的方式进行编辑。您不应该与Chef一起部分管理文件,然后让其他人以不同的方式管理文件的另一部分。他们应该适当地更新厨师代码

如果您希望人们单独管理零件,您可以查看。然而,这仍然要求他们以Chef可以导入和理解的方式管理自己的部分,而不是直接在服务器上操作


编辑:请参阅下面的注释,这是针对sudoers文件的,在这种情况下,应该使用资源。

感谢提供信息,实际上我有一个名为/etc/sudoers的文件,其中有一些重要的sudoers条目,这是我的项目所必需的。假设我使用我的配方维护了整个文件,并且将来有来自服务器或linux团队的人添加了一些条目,那么我的chef客户端将恢复到旧阶段的备份,这是我不想要的,所以我想要管理项目所需的特定条目好的,但是我可以使用哪个属性来管理项目中的条目链接底部有一些示例