- From: "Oleg Volotov" <
>
- To:
- Subject: [chef] Re: Re: Re: Re: Re: Inserting multiple lines through Chef::Util::FileEdit
- Date: Wed, 27 Feb 2013 09:30:17 +0100
The methode 'insert_line_if_no_match(...)' calls only the private one
'search_match(...)' with the right parameters. This methode makes his changes
only in the variable 'contents'. Try to make a 'f.write_file' after every
call of 'insert_line_if_no_match(...)'.
>
About the mount resource:
>
This was some time ago, but I couldn't get the mount resource to create an
>
fstab entry. My action is "action [:mount, :enable]", but it doesn't seem
>
to do anything to the fstab. I haven't tried to debug it in a while, I'll
>
dig into it and see what was the problem that led me to use FileEdit.
>
>
If it helps, what I'm mounting is an amazon EBS volume with non-default
>
formatting (xfs), attached to my instance during runtime by the right-aws
>
gem.
>
>
>
On Wed, Feb 27, 2013 at 1:44 AM, Jesse Nelson
>
<
>
>
wrote:
>
>
> Is it not possible to use the mount resource to manage these entries in
>
> your fstab ?
>
>
>
>
>
> On Tue, Feb 26, 2013 at 5:40 AM, Joseph Bowman
>
<
>wrote:
>
>
>
>> I've had to do this a lot recently starting to set up our base builds
>
as
>
>> we move to chef. I've just used embedded bash scripts to get the
>
results
>
>> I've needed. This is just taking an example from you original email,
>
please
>
>> check for typos and such before using it. I wrote it out in this email,
>
so
>
>> it's completely untested.
>
>>
>
>> bash "update_fstab" do
>
>> code <<-EOH
>
>> EBS_VOL_DEV_CHECK = $(grep '#{node['mysql']['ebs_vol_dev']} /'
>
>> /etc/fstab | wc -l)
>
>> if [ $EBS_VOL_DEV_CHECK -lt 0 ]; then
>
>> echo '#{node['mysql']['ebs_vol_dev']}
>
>> #{node['mysql']['mount_point']} #{node['mysql']['formatting']} noatime
>
0 0'
>
>> >> /ec/fstab
>
>> fi
>
>> EOH
>
>> end
>
>>
>
>> You'd want to update the code block for each instance. I used this to
>
>> manage files fstab, hosts and such. Albeit I'm much more comfortable
>
with
>
>> bash than ruby.
>
>>
>
>>
>
>>
>
>> On Tue, Feb 26, 2013 at 8:14 AM, Pete Cheslock
>
<
>wrote:
>
>>
>
>>> Ive never used fileedit before. You should just use a template to
>
render
>
>>> out the file as you need. It will likely solve your problem.
>
>>>
>
>>>
>
>>>
>
>>> On Feb 26, 2013, at 6:25 AM, Prajwal Manjunath
>
>>> <
>
>
>>> wrote:
>
>>>
>
>>> > 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.