如何为自定义事实添加依赖项 -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
资源,或编写包含整个过程(可能也包括下载)的自定义类型和提供程序。
实际上我正在从 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
资源,或编写包含整个过程(可能也包括下载)的自定义类型和提供程序。