从网络安装中复制 Puppet 模块文件资源

从网络安装中复制 Puppet 模块文件资源

我使用的是 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

以下是我已尝试过的事情清单:

  1. 变成ensure => present,ensure => file,
  2. 将 ${installer_path} 移至一个path => ...属性并为该块命名。
  3. 变成source => "file://${installer_src}",
  4. 用硬编码值替换所有变量

没有任何一个能显著改变结果。我反复验证了网络挂载点是否存在,父文件夹具有 0775 权限和 root:root 所有权,而文件具有 0755 权限和 root:root 所有权。

我曾考虑将 installer.bin 包装在模块的内部文件路径中,但由于文件大小、程序指南等原因,这样做并不理想。

否则,我就没什么主意了。木偶文档似乎说我做得对,所以现在我愿意尝试社区提供的任何建议。谢谢!

相关内容