I'm trying to use the FileEdit util to modify my fstab, but it doesn't seem to work as expected.
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?