问题描述
我正在尝试在 Windows 中使用 puppet 复制一个文件。
代码如下:-
file { 'D:\mycopy\folder\filename':
ensure => present,mode => '0660',source => "d:\temp\test.zip",}
它给了我以下错误
不能使用不透明网址的文件:\d: est\test.zip
我也想在复制后解压。谢谢。
解决方法
Puppet 将反斜杠 (\) 和正斜杠 (/) 识别为 Windows 文件名中的路径分隔符。尽管 Windows shell 需要前者,但后者在 Puppet 清单中使用更安全。
在这种情况下,双引号路径字符串中出现的两次 \t
将被解释为表示制表符的 escape sequences。在这种情况下,您可以通过将反斜杠加倍、切换到单引号字符串或切换到正斜杠来解决该问题。就风格而言,我会两者切换到单引号(因为字符串内容中没有变量插值或单引号)并切换到正斜杠:
然而,关于不透明 URL 的实际诊断是另一个问题的线索:Puppet 接受 URL 作为 File
的 source
参数的值,并且它将您的绝对文件名解释为带有方案的 URL 'd'。要解决此问题,您应该通过 file:
网址表示来源:
source => 'file://d:/temp/test.zip'