Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查文件是否存在的Puppet模块_Puppet - Fatal编程技术网

检查文件是否存在的Puppet模块

检查文件是否存在的Puppet模块,puppet,Puppet,由于Puppet中没有简单的方法来检查代理上是否存在文件,因此我尝试编写一个模块来执行此检查。然而,它并没有像预期的那样发挥作用。我已经做了以下工作: 在modules文件夹中,执行 puppet模块生成根mymodule 在mymodule/manifests/file_check.pp .. .. 如果已定义(文件[“/tmp/test_File”]){ .. .. 但是,这并没有达到我想要的效果。显然,它只检查目录中是否定义了该文件。如何让它实际检查该文件是否存在 因为在Puppet中并没

由于Puppet中没有简单的方法来检查代理上是否存在文件,因此我尝试编写一个模块来执行此检查。然而,它并没有像预期的那样发挥作用。我已经做了以下工作:

  • 在modules文件夹中,执行
  • puppet模块生成根mymodule

  • mymodule/manifests/file_check.pp
  • .. .. 如果已定义(文件[“/tmp/test_File”]){ .. .. 但是,这并没有达到我想要的效果。显然,它只检查目录中是否定义了该文件。如何让它实际检查该文件是否存在

    因为在Puppet中并没有简单的方法来检查Puppet上是否存在文件 代理,我正在尝试编写执行此检查的模块

    使用主/代理排列时,无法在目录生成期间测试客户端是否存在任意文件。目录生成发生在主目录上;在该过程中,无法从代理获取其他信息。如果使用
    puppet apply
    ,则可以使用该函数,但这是一个陷阱,它在等着咬一个后来试图将代码移动到主代码的人

    […]并没有达到我想要的。显然它只是 检查文件是否在目录中定义

    是的,
    defined()
    就是这样做的。事实上,比这更糟糕:
    defined()
    只能测试该特定
    文件的声明是否已被评估。它不能告诉您该资源的声明稍后可能会在同一目录生成运行中被评估。由于清单评估顺序难以预测,
    定义的
    比无用的更糟糕:它是危险的不,不要用它

    我怎样才能把它弄到手 实际检查文件是否存在

    我假设您希望及时执行这样的检入,以使用结果影响目录构建。这就是事实。Puppet提供的功能。对于测试特定文件是否存在这样简单的功能,我建议使用“外部事实”方法,而不是“自定义事实”方法


    但您也应该重新考虑您的前提,这显然是一种通用机制,用于对代理上存在的任意文件进行编译时测试,这将是一件有用的事情。事实上,这样的测试很少有用。Puppet有更好的方法来处理大多数任务,否则您可能会使用这种方法,并且剩下的大部分任务通常最好不要做。如果你想做一些具体的事情,那么我邀请你提出一个关于这件事的新问题。

    有道理,因为目录正在构建中,所以没有办法这样做。我将尝试“外部事实”路线。 .. .. if defined(File["/tmp/test_file"]) { .. ..
          if defined(File["/tmp/test_file"]) {