Right now, we wait for SSH before we do anything, including copying the kubeadm config, then init, then Calico, etc...
But it would be cleaner to just shove all of that setup in the cloud-init config itself. It would write the kubeadm config, and then the systemd unit which runs all the logic. That should make provisioning a bit faster. Once we get SSH, we can just wait until the systemd unit is active. (Though it'd be nice to actually avoid blocking on SSH entirely for bringup and instead get notified via e.g. virtio-serial or systemd's AF_VSOCK-powered integration.)
Right now, we wait for SSH before we do anything, including copying the kubeadm config, then init, then Calico, etc...
But it would be cleaner to just shove all of that setup in the cloud-init config itself. It would write the kubeadm config, and then the systemd unit which runs all the logic. That should make provisioning a bit faster. Once we get SSH, we can just wait until the systemd unit is active. (Though it'd be nice to actually avoid blocking on SSH entirely for bringup and instead get notified via e.g. virtio-serial or systemd's AF_VSOCK-powered integration.)