Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncomment a line in Puppet

Tags:

puppet

I'm getting into Puppet, and loving it, but am hitting my head against a wall with one small thing which I'm sure must be easier than I'm making it.

I wish to uncomment this line in the .bashrc of a user:

#force_color_prompt=yes

I've been using augeas for lots of things, but it seems as though that won't work with this.

I note that there's a file_line resource which I can use to ensure a line is present in a file, but I need the line to remain in the same place.

I don't wish to replace the .bashrc entirely with my own copy, despite seeing that this pattern is popular in Puppet, it just doesn't make sense to me as I don't want to maintain my own version between upgrades.

In sed I use this:

sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" ~/.bashrc

Any ideas?

like image 459
Ludo Avatar asked Aug 07 '12 10:08

Ludo


1 Answers

You could just add your sed command to an exec with an unless option using grep. Something like this (untested):

exec { 'force_color_prompt':
  command   => 'sed -i "s/#force_color_prompt=yes/force_color_prompt=yes/g" .bashrc'
  cwd       => '/home/user',
  shell     => true,
  unless    => 'grep -Fxq "force_color_prompt=yes" .bashrc',
}

Or use the file_line resource you mentioned (part of the Puppet Labs stdlib module I believe) to add the line uncommented and leave the commented line untouched.

like image 119
czervik Avatar answered Sep 23 '22 03:09

czervik