在 Puppet 4.4 之前,根据http://docs.puppetlabs.com/references/latest/type.html#file,文件源仅接受puppet://或file:// URI。
从 Puppet 4.4+ 开始,您可以使用原始代码。
如果您使用的是旧版本,那么在不拉下整个 Git 存储库的情况下实现您想要做的事情的一种方法是使用exec资源来获取文件。
exec{'retrieve_leiningen':
command => "/usr/bin/wget -q https://raw.github.com/technomancy/leiningen/stable/bin/lein -O /home/vagrant/bin/lein",
creates => "/home/vagrant/bin/lein",
}
file{'/home/vagrant/bin/lein':
mode => 0755,
require => Exec["retrieve_leiningen"],
}
尽管exec的使用有些不受欢迎,但它可以有效地用于创建您自己的类型。例如,您可以使用上面的代码片段并创建自己的资源类型。
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/vagrant/bin/lein':
remote_location => 'https://raw.github.com/technomancy/leiningen/stable/bin/lein',
mode => '0755',
}