[chef] Inserting multiple lines through Chef::Util::FileEdit


Chronological Thread 
  • From: Prajwal Manjunath < >
  • To:
  • Subject: [chef] Inserting multiple lines through Chef::Util::FileEdit
  • Date: Tue, 26 Feb 2013 16:55:06 +0530

Hi,

I'm trying to use the FileEdit util to modify my fstab, but it doesn't seem to work as expected.

This is essentially my code:

  ruby_block "setup fstab" do
    not_if "cat /etc/fstab | grep #{node['mysql']['mount_point']} > /dev/null"
    block do
      f = Chef::Util::FileEdit.new('/etc/fstab')
      f.insert_line_if_no_match(/^#{node['mysql']['ebs_vol_dev']} /, "#{node['mysql']['ebs_vol_dev']} #{node['mysql']['mount_point']} #{node['mysql']['formatting']} noatime 0 0")
      f.insert_line_if_no_match(/^#{node['mysql']['ebs_data_dir']} /, "#{node['mysql']['ebs_data_dir']} #{node['mysql']['data_dir']} none bind")
      f.insert_line_if_no_match(/^#{node['mysql']['ebs_binlog_dir']} /, "#{node['mysql']['ebs_binlog_dir']} #{node['mysql']['data_dir']} none bind")
      f.write_file
    end
    notifies :run, "execute[mount_all]", :immediately
  end

However, this only adds the first insert_line_if_no_match into the file. I confirmed this by removing the first command and it inserted the second one.

Is this by design? Am I really not supposed to run multiple insert_line_if_no_match commands in one block on one file?



Archive powered by MHonArc 2.6.16.

§