![Puppet 文件源可以来自 Web 服务吗?](https://linux22.com/image/644726/Puppet%20%E6%96%87%E4%BB%B6%E6%BA%90%E5%8F%AF%E4%BB%A5%E6%9D%A5%E8%87%AA%20Web%20%E6%9C%8D%E5%8A%A1%E5%90%97%EF%BC%9F.png)
是否有一种(简单的)方法可以让 Puppet 使用互联网上可用的文件作为文件的源属性?
例如:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
答案1
我正在写一个更新的答案来通知未来的读者,现在文件资源确实实现了 HTTP 源。
从文档:
来源
源文件,将被复制到本地系统上。此属性与内容和目标互斥。允许的值为:
- puppet:URI,指向模块中的文件或Puppet文件服务器挂载点。
- 本地可用文件(包括 NFS 共享或 Windows 映射驱动器上的文件)的完整限定路径。
- 文件:URI,其行为与本地文件路径相同。
- http: URI,指向由常见 Web 服务器提供的文件
因此,您可以按照所写的方式使用该构造:
file { "/home/text.txt":
source => "http://www.example.com/text.txt",
}
答案2
答案3
目前还不可能实现开箱即用:
来源:
...
可用的 URI 方案是 puppet 和 file。Puppet URI 将从 Puppet 的内置文件服务器检索文件
我最终使用了define
在互联网上找到的:
define remote_file($remote_location=undef, $mode='0644'){
exec{ "retrieve_${title}":
command => "/usr/bin/wget -q ${remote_location} -O ${title}",
creates => $title,
}
file{$title:
mode => $mode,
require => Exec["retrieve_${title}"],
}
}
remote_file{'/home/text.txt':
remote_location => 'http://www.example.com/text.txt'
}