使用厨师客户端维护文件内容

时间:2018-06-21 11:42:32

标签: chef chef-recipe

是否可以使用厨师食谱来维护文件中的特定行。

示例:fileA.txt

foo
foofoofoo
This is important content
This is important content
fooo
foofoofoof
foooooofoofofofof

在上面的示例中,我有一个名为 fileA.txt 的名称,其中有两行对我来说非常重要。如果有人只更改文件中的那两行。下一轮的Chef-client将其恢复为相同状态。

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

file '/tmp/fileA.txt' do
   content 'foo
   foofoofoo
   This is important content
   This is important content
   fooo
   foofoofoo
   foooooofoofofofof'
   action :create
end

上面的代码还还原了我不想要的其他行。 有解决方案吗?

1 个答案:

答案 0 :(得分:0)

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

如果您希望人们分别管理零件,则可以查看partial templates。但是,这仍然需要他们以Chef可以导入和理解的方式来管理自己的部分,并且不能直接在服务器上进行操作。

编辑:请参见下面的注释,该注释适用于sudoers文件,在这种情况下,应使用sudo资源。