Puppet Exec资源仅在文件更改时适用

时间:2019-02-12 08:58:11

标签: puppet

我有两种人偶资源类型,一个文件和一个Exec:

file { 'folder_a':
  source  => 'puppet:///modules/folder_a',
  ensure  => 'directory',
  recurse => true,
  path    => 'C:/folder_a',
  source_permissions => ignore,
  notify  => Exec['install.bat'],
}

exec { 'test_cmd':
  path      => $::path,
  command   => 'cmd.exe /c C:/test.cmd',
  provider  => windows,
  subscribe => File['folder_a'],
  logoutput => true,
}

如果文件资源不适用,则我也不希望Exec资源运行。但是,如果源文件已更新,则Exec应该运行。

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的。如docs中为Exec类型所指出的,有refreshonly属性:

  

仅刷新

     

仅当更改从属对象时,该命令才应作为刷新机制运行。

听起来这正是您所需要的:

exec { 'test_cmd':
  path      => $::path,
  command   => 'cmd.exe /c C:/test.cmd',
  provider  => windows,
  subscribe => File['folder_a'],
  logoutput => true,
  refreshonly => true, # Add this line.
} 

请记住,some强烈建议refreshonly仅用作最后的手段。