Puppet:一个执行块创建运行的次数是多少?

Puppet:一个执行块创建运行的次数是多少?,puppet,Puppet,我有以下两个exec资源,希望exec资源在文件/var/lib/my file不存在时运行脚本。我想知道如果这个文件永远无法创建会发生什么。exec资源是否会检查文件是否存在是否会在循环中永远运行,直到创建文件为止 exec { 'run the script': command => "python my-script.py", path => '/bin:/usr/bin:/usr/local/bin', timeout => 9

我有以下两个
exec
资源,希望
exec
资源
在文件
/var/lib/my file
不存在时运行脚本。我想知道如果这个文件永远无法创建会发生什么。
exec
资源
是否会检查文件是否存在
是否会在循环中永远运行,直到创建文件为止

exec { 'run the script':
  command     => "python my-script.py",
  path        => '/bin:/usr/bin:/usr/local/bin',
  timeout     => 900,
  subscribe   => File["my-settings.yaml"],
  refreshonly => true,
} 

exec { 'check if file exists':
  command => 'true',
  path    => '/bin:/usr/bin:/usr/local/bin',
  creates => '/var/lib/my-file',
  notify  => Exec['run the script']
}

每个目录应用程序只应用一次资源,而每个节点的每个目录编译只应用一次资源。您可以通过尝试来验证这一点

如果Python脚本无法创建文件,那么在下一个目录应用程序中只需再次应用资源。否则,将以幂等性为准,并且不会应用资源,因为文件已经存在

此外,您应该将资源简化为:

exec { 'run the script':
  command     => 'python my-script.py',
  path        => '/bin:/usr/bin:/usr/local/bin',
  timeout     => 900,
  creates     => '/var/lib/my-file',
  subscribe   => File["my-settings.yaml"],
  refreshonly => true,
}

这在功能上与您的问题相同,而且更高效、更容易阅读。

感谢您简化了它。exec块还需要监听对文件“my settings.yaml”的任何更改。不知道移除它是否是故意的。@哼哼哦,我错过了那部分。确实应该再加上。编辑答案。顺便说一句,将两个幂等属性放入
exec
资源也很好。