我使用的是 RHEL Satellite 6.6 和 puppet 5.5.12。我有一个模块,它可以将文件从网络映射文件夹复制到本地驱动器,然后执行它。当我在 Satellite 服务器上运行该模块时,它会顺利成功。当我将同一模块应用于另一台服务器(相同硬件类型、新安装的相同操作系统、非 Satellite 客户端)时,它在传输文件时死机,并出现一个相当无用的错误。模块的相关部分如下(识别信息已混淆):
$installer_name = 'installer.bin'
$installer_src = "/mnt/svr/path/${installer_name}"
$installer_path = "/tmp/${installer_name}"
...
file { "$installer_path":
ensure => present,
owner => 'root',
group => 'root',
mode => '0755',
source => "${installer_src}",
require => [ File_line['modify prop1'], File_line['modify prop2'], ]
}
在卫星服务器上执行此块时,它会记录... defined content as '{md5}####'
并继续,而在目标服务器上我收到以下错误:
Error: /Stage[main]/MODULE/File[/tmp/installer.bin]: Could not evaluate: Could not retrieve information from environment KT_PROG_NAME_Development_RHEL7_Core_2 source(s) file:/mnt/svr/path/installer.bin
以下是我已尝试过的事情清单:
- 变成
ensure => present,
ensure => file,
- 将 ${installer_path} 移至一个
path => ...
属性并为该块命名。 - 变成
source => "file://${installer_src}",
- 用硬编码值替换所有变量
没有任何一个能显著改变结果。我反复验证了网络挂载点是否存在,父文件夹具有 0775 权限和 root:root 所有权,而文件具有 0755 权限和 root:root 所有权。
我曾考虑将 installer.bin 包装在模块的内部文件路径中,但由于文件大小、程序指南等原因,这样做并不理想。
否则,我就没什么主意了。木偶文档似乎说我做得对,所以现在我愿意尝试社区提供的任何建议。谢谢!