【问题标题】:Chef FileEdit keep creating new fileChef FileEdit 不断创建新文件
【发布时间】:2014-08-07 03:54:31
【问题描述】:

我的食谱中有一个简单的 insert_line_if_no_match,它似乎会在每次后续的 chef-client 运行中不断重新创建文件。

在阅读 FileEdit 的 ruby​​doc 页面后,它说如果文件已更改,它只会写入一个新文件,但这似乎不是真的。

其他人有这个问题吗?

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] ' 结束

【问题讨论】:

  • 那个正则表达式由于某种原因不匹配。打开一个 Ruby 控制台并尝试一下

标签: chef-infra


【解决方案1】:

您可能需要考虑使用line 食谱。它有一些我们经常使用的 LWRP。例如:

replace_or_add "provide_useful_default_prompt" do
  path    "/etc/profile"
  pattern "PS1"
  line    "PS1='[\\! (\\h):\\W] '\n"
  action  :edit
end

记得在你的metadata.rb 中包含depends 'line',如果你使用它,在Berksfile 中包含cookbook 'line'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多