使用 chef-client 维护文件内容
Maintain the file content using chef-client
是否可以使用厨师食谱维护文件中的特定行。
示例: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 所做的。它使用文件资源管理文件的全部内容。如果您想要执行此操作的文件处理资源,则需要创建自己的自定义资源。然而,考虑到像这样的文件操作通常是如何工作的,这将非常特定于文件内容。您真的需要鼓励每个编辑文件的人都以相同的方式进行编辑。您不应该使用 Chef 部分管理文件,然后让其他人以不同的方式管理文件的另一部分。他们应该适当地更新 Chef 代码。
如果您希望人们单独管理部件,您可以查看 partial templates。但是,这仍然需要他们以 Chef 可以导入和理解的方式管理他们的部分,并且他们不直接在服务器上进行操作。
编辑:请参阅下面的评论,这是针对 sudoers 文件的,在这种情况下,应使用 sudo
资源。
是否可以使用厨师食谱维护文件中的特定行。
示例: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 所做的。它使用文件资源管理文件的全部内容。如果您想要执行此操作的文件处理资源,则需要创建自己的自定义资源。然而,考虑到像这样的文件操作通常是如何工作的,这将非常特定于文件内容。您真的需要鼓励每个编辑文件的人都以相同的方式进行编辑。您不应该使用 Chef 部分管理文件,然后让其他人以不同的方式管理文件的另一部分。他们应该适当地更新 Chef 代码。
如果您希望人们单独管理部件,您可以查看 partial templates。但是,这仍然需要他们以 Chef 可以导入和理解的方式管理他们的部分,并且他们不直接在服务器上进行操作。
编辑:请参阅下面的评论,这是针对 sudoers 文件的,在这种情况下,应使用 sudo
资源。