[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