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


Chronological Thread 
  • From: AJ Christensen < >
  • To: chef < >
  • Subject: [chef] Re: Re: Re: Re: Re: Re: Re: Inserting multiple lines through Chef::Util::FileEdit
  • Date: Thu, 28 Feb 2013 08:43:28 +1300

I did note that the uncomment line if match LWRP was not completely
implemented :)

Cheers,

AJ

On 28 February 2013 08:00, Sean OMeara 
< >
 wrote:
> Hontestly, these libs are in a need of some love.
> I have some "file a ticket" tasks in my GTD that I plan to get around to 
> soon.
> -s
>
> On Wed, Feb 27, 2013 at 3:30 AM, Oleg Volotov 
> < >
>  wrote:
>> 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.

§