如何添加自定义事实的依赖性-Facts ['name']在所有exec命令之前先执行

时间:2019-06-19 11:02:33

标签: puppet

实际上,我正在从ftp下载文件列表,并且从下载的路径中读取所有文件名列表以进行处理。

exec{"download from ftp ${value}"中,我将包含文件的目录和子目录从ftp下载到本地。从该路径开始使用自定义事实$facts['listdirectory']

获取列表

我的问题是Facts['listdirectory']在从ftp下载之前已执行。

如何为$datadir=$facts['listdirectory']添加依赖关系,或者如何使事实在下载后得到执行?

class classname{
    exec{"download from ftp ${value}":
        command => "wget -r --user=${ftp_username}  -- 
        password=${ftp_password}  ${value}/* -P ${patch_download_path}",
        path    => ['/usr/bin', '/usr/sbin',],
        timeout => 1800,
        user    =>'root',
    }
    $datadir=$facts['listdirectory']
}

1 个答案:

答案 0 :(得分:0)

  

我的问题是Facts ['listdirectory']在从ftp下载之前已经执行。

看起来您的意思是事实的值是在目录内容(不是事实实现)下载之前确定的。在任何情况下,肯定会发生

将首先评估所有将通知给定目录构建运行的事实,然后将其作为一个组交付给目录构建器(通常在木偶主机上远程运行)。这为目录构建器提供了一致的机器状态快照,因为它可以根据呈现的事实通过评估清单来计算所需的目标状态。结果以类和资源的目录形式提供,然后由本地Puppet应用。

仅在目录应用程序阶段运行Exec资源指定的命令。这是在建立整个目录之后,并且经过了长时间的事实评估。如果要动态适应已下载的内容,则必须在 next Puppet运行时执行此操作,或者对它进行脚本编写并通过相同或另一个Exec资源运行该脚本,或者编写涵盖整个过程的自定义类型和提供程序(可能也包括下载)。