Puppet 文件源可以来自 Web 服务吗?

Puppet 文件源可以来自 Web 服务吗?

是否有一种(简单的)方法可以让 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

它已经请求作为功能多年来...但你最终需要一个自定义函数来实现这一点...或者使用curlwget。参见木偶锻造

text.txt 中有什么?

答案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'
}

相关内容