The way I am currently running a CoreOS cluster in a VMWare ESXi environment has been to use an ISO mounted in vCenter as described by this blog post...
However with that particular VMWare environment, I have to explicitly define my assigned IP address into a
/etc/systemd/network/static.network service in the cloud config in a few places... so I have to create an ISO file for each CoreOS machine I want to run. This seems fine, but does not scale... and sometimes the IT admins unmount the ISO drive unintentionally.
The OEM distribution documentation (here) says that you can define a
/usr/share/oem/cloud-config.yml file and that you should be able to "create additional units that process user-provided metadata, as described below."
Then the process for EC2 and Rackspace is illuminated, and the explanation just points you to their baked in code in CoreOS.
What I would like to do is create a CoreOS unit that pulls a
cloud-config file via HTTP with a simple URL...something like
http://server-ip/cloud-configs/specific-hostname and pull the YAML file from there at boot...
This would solve two issues: I wouldn't have to provide a separate ISO for each CoreOS machine and I wouldn't have to have the VMWare admins consistently managing an ISO for each CoreOS machine.
The docs are not really clear on the best way to accomplish that. It seems like Amazon/Rackspace works because they have code inside the OS. How does Joe Schmoe provide dynamic cloud config data outside of mounting an ISO?
The big disconnect is that I can write a unit that fetches the file via wget/curl (whatever is available) but how do I tell CoreOS to process the YAML after I've fetched it?