[pve-devel] [PATCH qemu-server] fix #2068: allow disabling of package_upgrade for cloud-init

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Jan 30 09:49:32 CET 2019


On 1/29/19 4:42 PM, Dietmar Maurer wrote:
> CI has hundreds of options, and we should not try to configure all
> that stuff with proxmox. This was intentionally left out. 

and we're pretty close to the scripts/snippets on storage patches, so the
better longterm solution would be to allow adding and then sourcing such a
snippet, then all current and future options can be set in a generic way.
Maybe you could try working on that on top of Dominik's storage part of the
snippets (earlier scripts) series.

> 
> I think the user should configure such things inside the vm instead.
> 
>> On January 29, 2019 at 3:18 PM David Limbeck <d.limbeck at proxmox.com> wrote:
>>
>>
>> package_upgrade default is still 'true'. adds a new generic option 'cioptions'
>> that takes a list of property strings and is easy to extend. for now only
>> 'package_upgrade=<true/false>' is supported. registers a new format
>> 'pve-qm-cioptions' for parsing in different files.
>>
>> tested with ubuntu 18.10.
>>
>> Signed-off-by: David Limbeck <d.limbeck at proxmox.com>
>> ---
>>  PVE/API2/Qemu.pm            |  1 +
>>  PVE/QemuServer.pm           | 18 ++++++++++++++++++
>>  PVE/QemuServer/Cloudinit.pm |  4 +++-
>>  3 files changed, 22 insertions(+), 1 deletion(-)
>>
>> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
>> index 148ea1a..7fee88e 100644
>> --- a/PVE/API2/Qemu.pm
>> +++ b/PVE/API2/Qemu.pm
>> @@ -295,6 +295,7 @@ my $cloudinitoptions = {
>>      cipassword => 1,
>>      citype => 1,
>>      ciuser => 1,
>> +    cioptions => 1,
>>      nameserver => 1,
>>      searchdomain => 1,
>>      sshkeys => 1,
>> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
>> index bc3bb1d..c5e2309 100644
>> --- a/PVE/QemuServer.pm
>> +++ b/PVE/QemuServer.pm
>> @@ -616,6 +616,18 @@ EODESCR
>>      },
>>  };
>>  
>> +my $cioptions_fmt = {
>> +    package_upgrade => {
>> +	type => 'string',
>> +	optional => 1,
>> +	description => 'cloud-init: Enable/Disable package upgrade on boot.',
>> +	default => 'true',
>> +	enum => [qw(true false)]
>> +    }
>> +};
>> +
>> +PVE::JSONSchema::register_format('pve-qm-cioptions', $cioptions_fmt);
>> +
>>  my $confdesc_cloudinit = {
>>      citype => {
>>  	optional => 1,
>> @@ -633,6 +645,12 @@ my $confdesc_cloudinit = {
>>  	type => 'string',
>>  	description => 'cloud-init: Password to assign the user. Using this is generally not recommended. Use ssh keys instead. Also note that older cloud-init versions do not support hashed passwords.',
>>      },
>> +    cioptions => {
>> +	optional => 1,
>> +	type => 'string',
>> +	format => 'pve-qm-cioptions',
>> +	description => 'cloud-init: specify other options that are supported as a list of key=value pairs (e.g. package_upgrade=false,...).'
>> +    },
>>      searchdomain => {
>>  	optional => 1,
>>  	type => 'string',
>> diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm
>> index 5be820c..5f777a1 100644
>> --- a/PVE/QemuServer/Cloudinit.pm
>> +++ b/PVE/QemuServer/Cloudinit.pm
>> @@ -132,7 +132,9 @@ sub cloudinit_userdata {
>>  	$content .= "  - default\n";
>>      }
>>  
>> -    $content .= "package_upgrade: true\n";
>> +    my $cioptions = $conf->{cioptions} ? PVE::JSONSchema::parse_property_string('pve-qm-cioptions', $conf->{cioptions}) : {};
>> +    my $package_upgrade = $cioptions->{package_upgrade} // 'true'; # default
>> +    $content .= "package_upgrade: $package_upgrade\n";
>>  
>>      return $content;
>>  }
>> -- 
>> 2.11.0




More information about the pve-devel mailing list