Today there is a distinct gap in clean functionality in Puppet with regards to describing state such as "the artifact from the build server should be deployed to a local path". The File resource does not support source parameters using standard URI schemes such as http, ftp, https, etc. We should provide a clean solution to describing this kind of state.
Today, work-around or first-generation solutions exist such as the nanliu/staging module, which wraps various system commands such as curl or wget in Exec resources inside defined types to provide the basic functionality.
Other (better) solutions build a native type, e.g. `remote_file`, that uses platform-agnostic libraries such as net/http. See https://github.com/lwf/puppet-remote_file for a minimal, elegant example.
The problem with both of these approaches is that the use case is a fundamental primitive and should be a core capability, not an extension module.
Acceptable solutions would include EITHER modifying the File resource source parameter and semantics such that it can accept standard URI schemes such as http, OR providing a remote_file type as a core native resource.
(A remote_file native resource seems preferable as it has the distinct advantage of being clearer to the user, as it does not force us to introduce differing consistency semantics dependent on URI scheme. E.g. puppet:/// has checksum verification built in, http:/// not necessarily, has to be accounted for).