我的食谱中有一个简单的insert_line_if_no_match,似乎在每个后续的厨师 - 客户端运行中不断重新创建文件。
在阅读了FileEdit的rubydoc页面之后,它说如果文件发生了变化,它只会写一个新文件,但这似乎不是真的。
其他人有这个问题吗?
ruby_block“provide_useful_default_prompt”执行
block do
profile = Chef::Util::FileEdit.new("/etc/profile")
profile.insert_line_if_no_match(/PS1/, "\nPS1='[\\! (\\h):\\W] '\n")
profile.write_file
end
端
更多/ etc / profile | grep PS1
PS1 ='[! (\ h):\ W]' 端
答案 0 :(得分:0)
您可能需要考虑使用line
食谱。它有一些我们经常使用的LWRP。例如:
replace_or_add "provide_useful_default_prompt" do
path "/etc/profile"
pattern "PS1"
line "PS1='[\\! (\\h):\\W] '\n"
action :edit
end
如果您使用depends 'line'
,请务必在metadata.rb
和cookbook 'line'
中添加Berksfile
。