K3os: [feature request] support for regular cloud-init network config

Created on 2 May 2019  路  13Comments  路  Source: rancher/k3os

It would be great if it was possible to configure base networking settings (IP, gateway, dns domain, dns servers, hostname, search domains) through the regular cloud init interfaces (instead of having to create a connman service file).

Why is this important (in my opinion)? There are virtualization systems, like Proxmox VE, that allow you to configure a limited set of cloudinit parameters for a VM regarding the network config (but don't support full cloudinit scripts). This is usually enough to run any standard cloud image (Debian, CentOS, etc). It would be great if the k3os iso would behave similarly.

image

https://pve.proxmox.com/wiki/Cloud-Init_Support
https://pve.proxmox.com/wiki/Cloud-Init_FAQ

Most helpful comment

Just to keep this feature request alive: Thanks for all the workarounds mentioned in this thread. However they're all workarounds that - in a situation where cloudinit actually provides valid network infos to the VM - still require one of:

  • building a custom ISO (instead of using the vendor provided ISO)
  • building a VM from ISO, modify it to get its networking up and then create subsequent VMs by cloning this VM (instead of using the vendor provided ISO)
  • building a VM from ISO, manually modify it to get its networking up (instead of just booting up the vendor provided ISO)

My expectation as an enduser would still be that a VM booting with the vendor provided k3os ISO can work with standard cloudinit network config that gets passed to it. Similar to all the Linux cloud images (openstack images) out there (like debian, fedora, etc).

All 13 comments

I stumbled upon the same issue.
Thumbs up :-)

This would also help for cloud deployments in AWS

Yes, please, meanwhile: does anybody know a converter?

I've been thinking something like this :

  1. Create a template, install k3os on the disk and set data_sources to the correct type in /k3os/system/config.yaml
  2. Create a new VM based on said template
  3. Use your hypervisor's cloud-init implementation
  4. The init system should find the cloud-init config and apply it

Side-note: XenOrchestra uses the openstack config drive mechanism whereas Proxmox seems to use the cdrom method.

Please see #341 for more details, about the inabilty of linuxkit/metadata to pick up the user-data file in the cdrom data source.

@christian-korneck: it is possible to use the proxmox cli to inject your own config into the user-data of the cloud-init ISO.

mkdir -p /var/lib/vz/snippets
cp -p your-config.yaml /var/lib/vz/snippets/
qm set 100 --cicustom user=local:snippets/your-config.yaml

You need to mount the proxmox cloud-init device in k3os, to have a look at the merged content in file user-data, as qm cloudinit dump 100 user does only list the content of the proxmox entries.

Btw, you need to replace 100 with your VMID. :smile:

it is possible to use the proxmox cli to inject your own config
qm set 100 --cicustom user=local:snippets/your-config.yaml

@pagong thanks for mentioning this workaround.

@christian-korneck @BastienM
Please, have a look at https://github.com/pagong/cloudinit-for-k3os, if you want to build cloud-init compatible ISOs, that are also usable with k3os.

For Proxmox, you will have to disable the built-in cloud-init drive, upload the generated ISO to the ISO repository and mount it as a second cdrom drive instead.
Have fun! :smiley_cat:

@christian-korneck
Please, have a look at https://github.com/pagong/jitsi-meet-on-k3os#1st-part-install-k3os-on-a-proxmox-vm,
if you want to have fully automatic installations of k3os on Proxmox.

@pagong awesome, thanks for sharing!

@pagong awesome, thanks for sharing!

Solve to you? I'm trying to build using packer but cloud-init doesn't works

@pagong and others. Allow me to chime in.

Based on the code here in the terraform-provider-libvirt. One should be able to use that Terraform providers cloud-init ISO creation feature to create a supported K3OS cloud-init/config ISO. I'm thinking that to be the case as @pagong 's code in does the same thing as the one in the terraform provider repo. Except it's a different command to generate the ISO.

The above comment for those that want to automate their K3OS/K3S deployment. Terraform could be a good choice for many.

I hope that helps.

@larssb : Thanks for the hint to have a look at terraform.

However, if k3os is using the fixed, upstream linuxkit, then my little tool may no longer be needed.

Just to keep this feature request alive: Thanks for all the workarounds mentioned in this thread. However they're all workarounds that - in a situation where cloudinit actually provides valid network infos to the VM - still require one of:

  • building a custom ISO (instead of using the vendor provided ISO)
  • building a VM from ISO, modify it to get its networking up and then create subsequent VMs by cloning this VM (instead of using the vendor provided ISO)
  • building a VM from ISO, manually modify it to get its networking up (instead of just booting up the vendor provided ISO)

My expectation as an enduser would still be that a VM booting with the vendor provided k3os ISO can work with standard cloudinit network config that gets passed to it. Similar to all the Linux cloud images (openstack images) out there (like debian, fedora, etc).

Was this page helpful?
0 / 5 - 0 ratings