【问题标题】:Maintain the file content using chef-client使用 chef-client 维护文件内容
【发布时间】:2018-06-21 22:32:27
【问题描述】:

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

示例: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

上面的代码也恢复了我不想要的其他行.. 有什么解决办法吗?

【问题讨论】:

    标签: chef-infra chef-recipe


    【解决方案1】:

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

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

    编辑:见下面的 cmets,这是用于 sudoers 文件的,在这种情况下应该使用 sudo 资源。

    【讨论】:

    • 感谢您提供信息,实际上我有一个名为 /etc/sudoers 的文件,其中有一些重要的 sudoers 条目,这是我的项目所必需的。假设如果我已经使用我的食谱维护了整个文件,并且将来来自服务器或 linux 团队的人添加了更多条目,那么我的厨师客户端将恢复到我不想要的旧阶段的备份,所以我想管理特定的条目我的项目需要
    • 好的,但是我可以使用哪个属性来管理文件中的条目。
    猜你喜欢
    • 1970-01-01
    • 2015-04-03
    • 2023-03-18
    • 2012-02-26
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多