Puppet:一个exec块创建运行多少次?

时间:2018-05-08 15:20:01

标签: puppet

我有以下两个exec资源,并且只要文件exec不存在,就希望run the script资源/var/lib/my-file运行。我想知道如果文件永远不会被创建会发生什么。 exec资源check if file exists是否会在循环中永远运行直到它被创建?

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']
}

1 个答案:

答案 0 :(得分:2)

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

如果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,
}

这在功能上与您在问题中的内容相同,并且更有效,更易于阅读。