Large refactors require large changes in code.

It had been several months since I was away from my machines at home, and in that time, CoreOS changed their bare-metal installation procedures quite a bit. To the point where it almost seemed like an after-thought that folks would run CoreOS anywhere outside of GCE/AWS/Azure. Being that I don’t want to spend my money on cloud-based infrastructure when I’ve got a perfectly adequate 8-core machine at home with 32GB of ram and a few TB of storage, I knew I needed to update my virthelper scripts to get with the program.

High level requirements

  • Automate converting the Container Config (no longer cloud-init configs) to Ignition configs.
  • Modify the Libvirt XML manually (with code) to pass Ignition config path arguments.

I found that some of the automation and trickery included with CoreOS to generate the etcd snippets did not support libvirt. The vagrant-virtualbox helpers were a close fit, but not quite enough (expecting eth1 instead of eth0 for the network interface). This causes the coreos-metadata service to completely fail, a current major blocker for my new scripts to bear all their fruit. I’ve filed some issues/pull requests below with the CoreOS team to get that fixed.

There were some cleanup commits in my repository to allow for flexibility in running virt-install, but the main commit is: https://github.com/jforman/virthelper/commit/0cc65134d3dfd1aaaf14392a9e947e428969b491.

Issues/Pull Requests:

  • https://github.com/coreos/bugs/issues/2303
  • https://github.com/coreos/coreos-metadata/pull/79

Supporting Documentation and Links:

  • https://coreos.com/os/docs/latest/booting-with-libvirt.html
  • https://coreos.com/os/docs/latest/network-config-with-networkd.html
  • https://coreos.com/os/docs/latest/migrating-to-clcs.html
  • https://github.com/coreos/bugs/issues/2083
  • https://coreos.com/os/docs/latest/clc-examples.html
  • https://coreos.com/os/docs/1632.0.0/dynamic-data.html