Can Puppet File Source be from a web service?
Solution 1
I'm writing an updated answer to notify future readers that now the File resource indeed implements the HTTP source.
From the docs:
source
A source file, which will be copied into place on the local system. This attribute is mutually exclusive with content and target. Allowed values are:
- puppet: URIs, which point to files in modules or Puppet file server mount points.
- Fully qualified paths to locally available files (including files on NFS shares or Windows mapped drives).
- file: URIs, which behave the same as local file paths.
- http: URIs, which point to files served by common web servers
So you can use the construct as you wrote it:
file { "/home/text.txt":
source => "http://www.example.com/text.txt",
}
Solution 2
It's not possible out of the box right now:
source:
...
The available URI schemes are puppet and file. Puppet URIs will retrieve files from Puppet’s built-in file server
I ended up using define
I found on the internet:
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'
}
Solution 3
It's been requested as a feature for years... But you'd end up needing a custom function for this... or to use curl
or wget
. See Puppet Forge.
What's in text.txt?
Related videos on Youtube
gunwin
Updated on September 18, 2022Comments
-
gunwin almost 2 years
Is there a (simple) way to have puppet use a file available on the internet for the Source property of a File?
eg:
file { "/home/text.txt": source => [ "http://www.example.com/text.txt", ] }
-
gunwin over 9 yearstxt.txt is just an example. I actually want to use it to pull Freeradius clients from an admin system.
-
KJH over 6 yearsas of Puppet version 4.4.0 (via ticket tickets.puppetlabs.com/browse/PUP-1072)