As you can see the append function is running last and hence all this
is working. What controls the sequence in which the modules/classes/
function execute in puppet? Is this random or during the catalog
compilation, puppet understands that it needs to run specific modules
earlier and other modules later.

On Jan 5, 3:20 pm, Ace <tejas....@gmail.com> wrote:
> Yes this definitely works although it replaces the file and appends
> the line to it every time it runs. Is there a cleaner way of doing
> it?
>
> tmp/filetest is a file managed by puppet who's contents are two lines
> "testme" and "hmm what does this do". The append function appends line
> "works" everytime it runs.
>
> [root@ /]$ cat /tmp/filetest
> testme
> hmm what does this do
> works
> [root@ /]$ puppetd --test
> info: Caching catalog for xxx
> info: Applying configuration version '1294258209'
> --- /tmp/filetest       Wed Jan  5 15:12:09 2011
> +++ /tmp/puppet-file20110105-13009-1lgt6q-0     Wed Jan  5 15:12:26
> 2011
> @@ -1,3 +1,2 @@
>  testme
>  hmm what does this do
> -works
> info: FileBucket adding /tmp/filetest as {md5}
> a1e1337e26fd34816281fbb48b4db945
> info: /Stage[main]/Sys_files/File[/tmp/filetest]: Filebucketed /tmp/
> filetest to puppet with sum a1e1337e26fd34816281fbb48b4db945
> notice: /Stage[main]/Sys_files/File[/tmp/filetest]/content: content
> changed '{md5}a1e1337e26fd34816281fbb48b4db945' to '{md5}
> fcf03823146b78fb73e8df3c3494ef6d'
> notice: /Stage[main]/Append/
> Append::Appendifnosuchline[ensure_foobar_in_filetest]/Exec[appendline_/
> tmp/filetest_works]/returns: executed successfully
> notice: Finished catalog run in 6.86 seconds
> [root@ /]$ cat /tmp/filetest
> testme
> hmm what does this do
> works
> [root@ /]$ puppetd --test
> info: Caching catalog for xxx
> info: Applying configuration version '1294258209'
> --- /tmp/filetest       Wed Jan  5 15:12:27 2011
> +++ /tmp/puppet-file20110105-13134-1p9lv09-0    Wed Jan  5 15:13:47
> 2011
> @@ -1,3 +1,2 @@
>  testme
>  hmm what does this do
> -works
> info: FileBucket got a duplicate file /tmp/filetest ({md5}
> a1e1337e26fd34816281fbb48b4db945)
> info: /Stage[main]/Sys_files/File[/tmp/filetest]: Filebucketed /tmp/
> filetest to puppet with sum a1e1337e26fd34816281fbb48b4db945
> notice: /Stage[main]/Sys_files/File[/tmp/filetest]/content: content
> changed '{md5}a1e1337e26fd34816281fbb48b4db945' to '{md5}
> fcf03823146b78fb73e8df3c3494ef6d'
> notice: /Stage[main]/Append/
> Append::Appendifnosuchline[ensure_foobar_in_filetest]/Exec[appendline_/
> tmp/filetest_works]/returns: executed successfully
> notice: Finished catalog run in 6.28 seconds
> [root@/]$ cat /tmp/filetest
> testme
> hmm what does this do
> works
>
> On Jan 5, 1:22 pm, Nigel Kersten <ni...@puppetlabs.com> wrote:
>
> > On Wed, Jan 5, 2011 at 8:27 AM, Ace <tejas....@gmail.com> wrote:
> > > Yep I have tried the code below and I got changes everytime I ran it.
> > > Could you elaborate on the below lines that you mentioned. Thanks.
> > >  I will also try the concat method.
>
> > That would be because I gave you an entirely broken example :)
>
> > define appendifnosuchline($file="", $line="") {
> >   exec { "appendline_${file}_${line}":
> >     path    => "/bin:/usr/bin",
> >     command => "/bin/echo ${line} >> ${file}",
> >     unless  => "grep -qx ${line} ${file}",
> >   }
>
> > }
>
> > appendifnosuchline { "ensure_foobar_in_filetest":
> >   file => "/tmp/filetest",
> >   line => "foobar",
>
> > }
>
> > That looks to work.
>
> > > You can however manage the attributes of the file, and could require
> > > the
> > > given File resource when using the defined type so that those settings
> > > are
> > > always applied first.
>
> > > On Jan 4, 11:04 am, Nigel Kersten <ni...@puppetlabs.com> wrote:
> > > > On Mon, Jan 3, 2011 at 1:51 PM, Ace <tejas....@gmail.com> wrote:
> > > > > I want to manage cronjobs as a " file " in solaris through puppet and
> > > > > not using the puppet cron resource.
>
> > > > > I will be managing the file /var/spool/cron/crontabs/root.
>
> > > > > I want the cron file to be same across all servers except some servers
> > > > > will have additional cron entries.
>
> > > > > How can I append to the file /var/spool/cron/crontabs/root , something
> > > > > like appendifnosuchline in cfengine?
>
> > > > > Can  "appendifnosuchline" be implemented through puppet even through
> > > > > the file /var/spool/cron/crontabs/root is being managed through
> > > > > puppet?
>
> > > > There are a bunch of recipes around where people construct an Exec with
> > > an
> > > > onlyif/unless conditional to achieve this.
>
> > > > Here's something I just whipped up that looks to work ok.
>
> > > > define appendifnosuchline($file="", $line="") {
> > > >   exec { "appendline_${file}_${line}":
> > > >     path    => "/bin:/usr/bin",
> > > >     command => "echo ${text} >> ${line}",
> > > >     unless  => "grep -qx ${text} ${line}",
> > > >   }
>
> > > > }
>
> > > > appendifnosuchline { "ensure_foobar_in_filetest":
> > > >   file => "/tmp/filetest",
> > > >   line => "foobar",
>
> > > > }
>
> > > > You could do something trickier with composite namevars, but this works.
>
> > > > You don't want to do this and manage the *contents* of the file with
> > > Puppet.
> > > > You'll get changes on every run then.
>
> > > > You can however manage the attributes of the file, and could require the
> > > > given File resource when using the defined type so that those settings
> > > are
> > > > always applied first.
>
> > > > > Thanks,
> > > > > Ace
>
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > Groups
> > > > > "Puppet Users" group.
> > > > > To post to this group, send email to puppet-us...@googlegroups.com.
> > > > > To unsubscribe from this group, send email to
> > > > > puppet-users+unsubscr...@googlegroups.com<puppet-users%2bunsubscr...@googlegroups.com>
> > > <puppet-users%2bunsubscr...@googlegroups.com<puppet-users%252bunsubscr...@googlegroups.com>
>
> > > > > .
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/puppet-users?hl=en.
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > > "Puppet Users" group.
> > > To post to this group, send email to puppet-us...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > puppet-users+unsubscr...@googlegroups.com<puppet-users%2bunsubscr...@googlegroups.com>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/puppet-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to