实际上,我正在从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']
}
答案 0 :(得分:0)
我的问题是Facts ['listdirectory']在从ftp下载之前已经执行。
看起来您的意思是事实的值是在目录内容(不是事实实现)下载之前确定的。在任何情况下,肯定会发生 。
将首先评估所有将通知给定目录构建运行的事实,然后将其作为一个组交付给目录构建器(通常在木偶主机上远程运行)。这为目录构建器提供了一致的机器状态快照,因为它可以根据呈现的事实通过评估清单来计算所需的目标状态。结果以类和资源的目录形式提供,然后由本地Puppet应用。
仅在目录应用程序阶段运行Exec
资源指定的命令。这是在建立整个目录之后,并且经过了长时间的事实评估。如果要动态适应已下载的内容,则必须在 next Puppet运行时执行此操作,或者对它进行脚本编写并通过相同或另一个Exec
资源运行该脚本,或者编写涵盖整个过程的自定义类型和提供程序(可能也包括下载)。