[pve-devel] [PATCH] Let PVE QEMU Cloud-Init adapt Cloudbase-init
Austin Chan
sptrsca at gmail.com
Fri Apr 12 00:36:24 CEST 2019
---
PVE/API2/Qemu.pm | 8 ++++++--
PVE/QemuServer/Cloudinit.pm | 13 +++++++++----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 7195ec2..a591d7a 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -1020,10 +1020,14 @@ my $update_vm_api = sub {
my $background_delay = extract_param($param, 'background_delay');
+ my $ostype = PVE::QemuConfig->load_config($vmid)->{ostype};
+
if (defined(my $cipassword = $param->{cipassword})) {
# Same logic as in cloud-init (but with the regex fixed...)
- $param->{cipassword} = PVE::Tools::encrypt_pw($cipassword)
- if $cipassword !~ /^\$(?:[156]|2[ay])(\$.+){2}/;
+ if (!PVE::QemuServer::windows_version($ostype)) {
+ $param->{cipassword} = PVE::Tools::encrypt_pw($cipassword)
+ if $cipassword !~ /^\$(?:[156]|2[ay])(\$.+){2}/;
+ }
}
my @paramarr = (); # used for log message
diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm
index 445c777..4f39a2b 100644
--- a/PVE/QemuServer/Cloudinit.pm
+++ b/PVE/QemuServer/Cloudinit.pm
@@ -43,7 +43,7 @@ sub commit_cloudinit_disk {
my $size = PVE::Storage::file_size_info($iso_path);
eval {
- run_command([['genisoimage', '-R', '-V', $label, $path],
+ run_command([['genisoimage','-iso-level', '3', '-R', '-V', $label, $path],
['qemu-img', 'dd', '-n', '-f', 'raw', '-O', $format,
'isize=0', "osize=$size", "of=$iso_path"]]);
};
@@ -159,11 +159,11 @@ sub configdrive2_network {
my ($searchdomains, $nameservers) = get_dns_conf($conf);
if ($nameservers && @$nameservers) {
$nameservers = join(' ', @$nameservers);
- $content .= " dns_nameservers $nameservers\n";
+ $content .= " dns-nameservers $nameservers\n";
}
if ($searchdomains && @$searchdomains) {
$searchdomains = join(' ', @$searchdomains);
- $content .= " dns_search $searchdomains\n";
+ $content .= " dns-search $searchdomains\n";
}
my @ifaces = grep(/^net(\d+)$/, keys %$conf);
@@ -203,9 +203,14 @@ sub configdrive2_network {
sub configdrive2_metadata {
my ($uuid) = @_;
+ my ($conf, $vmid, $uuid) = @_;
+ my ($hostname, $fqdn) = get_hostname_fqdn($conf, $vmid);
+ my $password = $conf->{cipassword};
return <<"EOF";
{
"uuid": "$uuid",
+ "hostname": "$hostname",
+ "admin_pass": "$password",
"network_config": { "content_path": "/content/0000" }
}
EOF
@@ -222,7 +227,7 @@ sub generate_configdrive2 {
my $digest_data = $user_data . $network_data;
my $uuid_str = Digest::SHA::sha1_hex($digest_data);
- $meta_data = configdrive2_metadata($uuid_str);
+ $meta_data = configdrive2_metadata($conf, $vmid, $uuid_str);
}
my $files = {
'/openstack/latest/user_data' => $user_data,
--
2.15.1
More information about the pve-devel
mailing list