How can a cloud-config script copy a file to a server? write_files
requires the file content in the script. How can I specify an external file that contains the content?
2 Answers
You haven't given enough context to know for sure, but for the purposes of this answer I'll assume you're running in Amazon Web Services.
As per the cloud-init documentation here, the only way to create a file directly via cloud-init is to include the file content in the script, either raw, base64-encoded, gzipped or base-64+gzipped.
Apart from doing that, the most straightforward way to do this would be to download the file - either via HTTP or an API call (for example, to S3).
Another way of getting the file onto the server would be to create a custom OS image (AMI) containing the file, by using something like Packer.
-
I'm using CoreOS, but my question refers to the
cloud-config
(orcloud-init
) specification, not any particular implementation. I was wondering if there was some command that I had overlooked. It seems thatcloud-config
scripts are designed to pull, not push files to the target server. Jul 21, 2016 at 20:50 -
3It also strikes me that cloud-config scripts are meant only to bootstrap a server, not fully provision it. A provisioning tool like Ansible seems more appropriate for more sophisticated configuration. Jul 21, 2016 at 21:02
scp
in the runcmd section can retrieve files, albeit in the final stage of cloud-init.