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

How to add dependency for custom facts -Facts['name'] executing first before all exec commands

实际上我正在从 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']
}

My problem is that Facts['listdirectory'] is executed before being downloaded from ftp.

您的意思似乎是在下载目录内容(而非事实实现)之前确定事实的值。当然,无论如何, 都会发生这种情况。

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

只有在 catalog-application 阶段,您的 Exec 资源指定的命令才会 运行。这是在构建了整个目录之后,并且在事实评估很久之后。如果您想动态适应已下载的内容,则必须在 next Puppet 运行 上执行此操作,或者编写脚本并通过 运行 脚本相同或另一个 Exec 资源,或编写包含整个过程(可能也包括下载)的自定义类型和提供程序。