On Wednesday, November 19, 2014 8:04:59 AM UTC-6, Mnemo Johnny wrote:
>
> Hi, colleagues!
>
> Can I repeatedly use a one file resource in Windows in follow case?
>
You can never declare the same resource more than once in one catalog.
Under some circumstances, however, the same DSL code can be used to declare
multiple *different* resources, or you can use conditional constructs to
allow you to evaluate a piece of DSL code multiple times to ultimately
declare only one resource.
>
> 1. Check file resource with md5 from source disk.
> 2. If it changed -> stop application -> replace .exe on destination ->
> start application.
> 3. If not -> noop.
>
> 'Define' with 'realize' don't help me - duplicate resource. For Windows 7
> I had successfully used validate_cmd, but in Windows XP stdlib with
> validate_cmd is not supported.
>
>
> Resource in Windows 7:
>
> file { $app1exe:
> source => "${app1source}\\${appname}.exe",
> ensure => present,
> require => Exec['map_source'],
> checksum => md5,
> source_permissions => ignore,
> validate_cmd => "${cmd} /c start taskkill /f /im ${appname}.exe",
> notify => Acl[$app1path],
> }
>
>
PuppetLabs's 'stdlib' module has a validate_cmd() function, but that's
nothing to do with the above. The 'validate_cmd' there is a parameter of
the File resource type, first introduced in Puppet 3.5. Anyway, *neither*
validate_cmd enables you to circumvent Puppet's constraint against
multiple-declaration of resources. To use that File declaration for a
Windows XP -- or any other -- machine, that machine must be running a
recent enough version of Puppet (at least v 3.5).
> How to redeclare file resource to use it in Windows XP?
>
>
Again, if you mean multiple declaration of the same resource in one
catalog, then you can't. Not in WinXP, Win7, Win8, Linux, OS X, or any
other OS supported by Puppet.
If you mean declaring the same resource in each of several different
catalogs for the same machine, then you don't need to do anything special
at the Puppet level. That's not multiple or re-declaration in the sense
those terms are used in Puppet context, and it just works as far as Puppet
is concerned -- Puppet will happily produce a catalog. You may be
constrained by other factors, however, such as Windows refusing to modify
or replace the EXE of a running process. Such factors could cause catalog
*application* to fail, but a solution must involve what you declare, not so
much how you declare it.
I find your use of the validate_cmd parameter to be a bit of a hack, but
also a bit ingenious. I don't know any other way to inject actions between
a File resource determining the target local file is out sync, and that
File updating the local file. I would previously have said there wasn't
any way at all to do that. If that's the behavior you're after, then your
best best is to ensure that your clients are all running at least Puppet
3.5.
Do note that *no* version of Puppet is officially supported on Windows XP.
That's perhaps a bit of a technicality, however, since Puppet 2.7.6 and
above is supported on Windows Server 2003 R2, and unsupported packages are
available for Windows Server 2003 (original), which is more or less just
the server version of XP.
John
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/9eb4e61a-3b84-4777-a432-b0e10f7c8c04%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.