Puppet 模块文件语句不会复制本地

问题描述

我使用的是带有 puppet 5.5.12 的 RHEL Satellite 6.6。我有一个模块,除其他外,它将文件从网络映射文件夹复制到本地驱动器,然后执行它。当我针对卫星服务器运行该模块时,它顺利成功。当我将相同的模块应用于另一台服务器(相同的硬件类型、相同的新安装的操作系统、非卫星客户端)时,它在传输文件时死亡,并出现一个相当无用的错误。模块相关部分如下(识别信息混淆):

$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 perms 和 root:root 所有权,而文件有 0755 perms 和 root:root 所有权。

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

否则,我的想法已经不多了。 puppet docs 似乎说我做对了,所以在这一点上,我愿意尝试社区提供的任何建议。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)