如何使用Chef配方删除文件中的行?

时间:2016-02-25 08:56:51

标签: ruby chef chef-recipe

我想删除行配置(此单词“配置”位于文件“hdfs-site.xml”中的尖括号内)。我尝试使用此代码,但没有运气。

ruby_block "delete_lines_in_hdfs_site" do
block do
  file = Chef::Util::FileEdit.new("/opt/hadoop-2.4.1/etc/hadoop/hdfs-site.xml")
  file.search_file_delete_line(/<configuration>/)
end
end

2 个答案:

答案 0 :(得分:1)

您不会使用chef添加或删除文件中的行。而是将您的配置文件替换为您的配置文件,并将其放入files/templates/ forlder下的食谱中。

template "/opt/hadoop-2.4.1/etc/hadoop/hdfs-site.xml"

cookbook_file "/opt/hadoop-2.4.1/etc/hadoop/hdfs-site.xml"

当您在配置文件中添加/替换行时,您无法确定,在升级已安装的软件后,您的配置文件是正确的。

答案 1 :(得分:1)

你需要用

结束红宝石块
file.write_file

否则不会写出更改。

虽然我同意首选使用模板并将其视为最佳做法,但有时您需要编辑可能存在变体且不符合模板模型的现有文件。