我有以下两个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']
}
答案 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,
}
这在功能上与您在问题中的内容相同,并且更有效,更易于阅读。