v2 rebase with master Any updates on this ? Patch has been available since june reference: https://lists.proxmox.com/pipermail/pve-devel/2021-June/049025.html
Example: qm set 9000 --cicustom "vendor=local:snippets/vendor.yaml" cat << 'EOF' > /var/lib/vz/snippets/vendor.yaml runcmd: - apt update - apt install -y qemu-guest-agent - systemctl start qemu-guest-agent EOF Signed-off-by: Constantin Herold <proxmox8...@herold.me> --- PVE/QemuServer.pm | 8 ++++++++ PVE/QemuServer/Cloudinit.pm | 23 ++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index cc73af8..54b1ce9 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -713,6 +713,14 @@ my $cicustom_fmt = { format => 'pve-volume-id', format_description => 'volume', }, + vendor => { + type => 'string', + optional => 1, + description => 'Specify a custom file containing all vendor data passed to the VM via' + .' cloud-init.', + format => 'pve-volume-id', + format_description => 'volume', + }, }; PVE::JSONSchema::register_format('pve-qm-cicustom', $cicustom_fmt); diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm index a5474d3..da776a9 100644 --- a/PVE/QemuServer/Cloudinit.pm +++ b/PVE/QemuServer/Cloudinit.pm @@ -227,7 +227,7 @@ EOF sub generate_configdrive2 { my ($conf, $vmid, $drive, $volname, $storeid) = @_; - my ($user_data, $network_data, $meta_data) = get_custom_cloudinit_files($conf); + my ($user_data, $network_data, $meta_data, $vendor_data) = get_custom_cloudinit_files($conf); $user_data = cloudinit_userdata($conf, $vmid) if !defined($user_data); $network_data = configdrive2_network($conf) if !defined($network_data); @@ -237,7 +237,8 @@ sub generate_configdrive2 { my $files = { '/openstack/latest/user_data' => $user_data, '/openstack/content/0000' => $network_data, - '/openstack/latest/meta_data.json' => $meta_data + '/openstack/latest/meta_data.json' => $meta_data, + '/openstack/latest/vendor_data.json' => $vendor_data }; commit_cloudinit_disk($conf, $vmid, $drive, $volname, $storeid, $files, 'config-2'); } @@ -493,7 +494,7 @@ sub nocloud_gen_metadata { sub generate_nocloud { my ($conf, $vmid, $drive, $volname, $storeid) = @_; - my ($user_data, $network_data, $meta_data) = get_custom_cloudinit_files($conf); + my ($user_data, $network_data, $meta_data, $vendor_data) = get_custom_cloudinit_files($conf); $user_data = cloudinit_userdata($conf, $vmid) if !defined($user_data); $network_data = nocloud_network($conf) if !defined($network_data); @@ -501,10 +502,16 @@ sub generate_nocloud { $meta_data = nocloud_gen_metadata($user_data, $network_data); } + # we always allocate a 4MiB disk for cloudinit and with the overhead of the ISO + # make sure we always stay below it by keeping the sum of all files below 3 MiB + my $sum = length($user_data) + length($network_data) + length($meta_data) + length($vendor_data); + die "Cloud-Init sum of snippets too big (> 3 MiB)\n" if $sum > (3 * 1024 * 1024); + my $files = { '/user-data' => $user_data, '/network-config' => $network_data, - '/meta-data' => $meta_data + '/meta-data' => $meta_data, + '/vendor-data' => $vendor_data }; commit_cloudinit_disk($conf, $vmid, $drive, $volname, $storeid, $files, 'cidata'); } @@ -518,6 +525,7 @@ sub get_custom_cloudinit_files { my $network_volid = $files->{network}; my $user_volid = $files->{user}; my $meta_volid = $files->{meta}; + my $vendor_volid = $files->{vendor}; my $storage_conf = PVE::Storage::config(); @@ -536,7 +544,12 @@ sub get_custom_cloudinit_files { $meta_data = read_cloudinit_snippets_file($storage_conf, $meta_volid); } - return ($user_data, $network_data, $meta_data); + my $vendor_data; + if ($vendor_volid) { + $vendor_data = read_cloudinit_snippets_file($storage_conf, $vendor_volid); + } + + return ($user_data, $network_data, $meta_data, $vendor_data); } sub read_cloudinit_snippets_file { -- 2.23.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel