Re: [Puppet Users] exec resource not refreshed when subscribed resource changes

Keith Burdis
Thu, 14 Mar 2013 08:25:17 -0000

Perhaps try:

1) Adding a notify => Exec[''unpack_archive''] to the file
resource.

2) Adding refreshonly => true to the exec.

3) Remove the creates and subscribe  from the exec.

That way the exec will only be called when the file changes.

- Keith
On 14 Mar 2013 07:56, <dirk.heinrichs@altum.de> wrote:

> Hello,
>
> I''ve created a little class which should unpack a 7z archive on
Windows.
> The class has a parameter for passing in the archive version, so that I can
> trigger an update when a new version of the archive is available. A
> simplyfied version looks like this (requires 7z):
>
> class my_archive ($version = undef) {
>     file { ''version'':
>         path => ''C:/the_version'',
>         content => $version,
>         ensure => present,
>         mode => 0666,
>     }
>
>     # Extracting archive creates C:/some/dir
>     exec { ''unpack_archive'':
>         command => "cmd /c rmdir /S /Q C:\some/dir & 7z x
-oC:/some
> C:/path/to/archive-${version}.7z",
>         creates => ''C:/some/dir/a_file'',
>         require => File[''version''],
>         path => $::path,
>         subscribe => File[''version''],
>     }
> }
>
> I trigger this from site.pp like so:
>
>   class { ''my_archive'':
>     version => ''1.2.3''
>   }
>
> The initial unpacking of (an older version of) the archive works fine, but
> when I change the version, I see that this change is recognized by the
> agent and a refresh is triggered, but the command isn''t executed:
>
> Info: /Stage[main]/My_archive/File[version]: Filebucketed C:/the_version
> to puppet with sum 185910a1e94c599dc6541266286675bc
> Notice: /Stage[main]/My_archive/File[version]/content: content changed
> ''{md5}185910a1e94c599dc6541266286675bc'' to
> ''{md5}d0cdd9a6594750ea1063643fcda90d3b''
> Debug: /Stage[main]/My_archive/File[version]: The container
> Class[My_archive] will propagate my refresh event
> Info: /Stage[main]/My_archive/File[version]: Scheduling refresh of
> Exec[unpack_archive]
> Debug: /Schedule[weekly]: Skipping device resources because running on a
> host
> Debug: Prefetching windows resources for package
> Notice: /Stage[main]/My_archive/Exec[unpack_archive]: Triggered
''refresh''
> from 1 events
> Debug: /Stage[main]/My_archive/Exec[unpack_archive]: The container
> Class[My_archive] will propagate my refresh event
> Debug: Class[My_archive]: The container Stage[main] will propagate my
> refresh event
> Debug: /Schedule[puppet]: Skipping device resources because running on a
> host
> Debug: Finishing transaction 144533424
> Debug: Storing state
> Debug: Stored state in 0.06 seconds
> Notice: Finished catalog run in 0.75 seconds
>
> I tried to omit "creates => ...", but this only makes the
agent run the
> resource every time. I also tried adding "refreshonly =>
true", but this
> doesn''t help. I even tried adding "refresh => ..."
with the exact same
> command without any change in behaviour.
>
> Any hints what could be wrong?
>
> Puppet Agent version on Windows is 3.1.0.
>
> Thanks...
>
>     Dirk
>
> --
> 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+unsubscribe@googlegroups.com.
> To post to this group, send email to puppet-users@googlegroups.com.
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.