Chef infra 使用chef客户端维护文件内容
是否可以使用chef recipe维护文件中的特定行 示例:fileA.txtChef 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客户端时,会将其恢复到相同的状态 但是,如果有人改变了其他对我来说不重要的行,它将不会
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客户端将恢复到旧阶段的备份,这是我不想要的,所以我想要管理项目所需的特定条目好的,但是我可以使用哪个属性来管理项目中的条目链接底部有一些示例