Thank you very much for your prompt reply... Will this work??
class environment { exec{'oe_run': path=>'/usr/bin', command => 'echo PATH=\$PATH:/opt/logstash/bin >> /etc/profile', unless => "grep -qFx 'PATH=\$PATH:/opt/logstash/bin' /etc/profile", } On Wednesday, 29 June 2016 12:38:35 UTC-4, Peter Kristolaitis wrote: > > First of all, I will say that this is probably a sledgehammer approach to > accomplishing your goal. Many modern platforms have, in their default > /etc/profile, support for /etc/profile.d/ that works like a run-parts for > building the environment. The Puppet Agent package installs its own $PATH > entry in this way on both CentOS and Ubuntu. So you're probably better > off managing a file in that location so that it gets auto-included by > /etc/profile. > > Secondly, your problem is variable interpolation. Because you're using > double quotes around the command and onlyif statments, Puppet is > interpolating $PATH to be (probably) an empty string, rather than a literal > "$PATH". You need to either change to single quotes (and then adjust the > quoting around your grep match string) or escape the $ with \$. > > Finally, if you were to use the above solution, it's still a bit of a > sledgehammer because you're not really modeling state. The best solution > would actually be to use something like Augeas to examine the file and > modify as necessary. "exec / onlyif" and "exec / unless" are kind of > measures-of-last-resort in the Puppet world (now, having said that, I must > admit that I'm completely guilty of using it myself on occasion :p ). > > > On 2016-06-29 12:19 PM, Andrew Morgan wrote: > > I want to check if pattern exist in a file and then if it doesn;t echo > the pattern in the file. > > class environment { > > exec{'one_run': > path=>'/usr/bin', > command => "echo 'PATH=$PATH:/opt/logstash/bin' >> > /etc/profile", > onlyif => "grep -qFx 'PATH=$PATH:/opt/logstash/bin' > /etc/profile", > } > } > > The above doesn't work,can anyone help with this please? I want to check > if PATH=$PATH:/opt/logstash/bin' exists in /etc/profile and if not input it > only once. > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to puppet-users...@googlegroups.com <javascript:>. > To view this discussion on the web visit > <https://groups.google.com/d/msgid/puppet-users/1b36ab52-29ee-455f-8efb-8d647fbd6c9c%40googlegroups.com?utm_medium=email&utm_source=footer> > https://groups.google.com/d/msgid/puppet-users/1b36ab52-29ee-455f-8efb-8d647fbd6c9c%40googlegroups.com > . > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/8d014b64-242d-4ef5-bc27-dfad20418c23%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.