From e8ac21381ee32e780fc540c756cdd3e50b1a193c Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Wed, 7 Mar 2018 08:08:03 +0100 Subject: [PATCH] cloud-init: remove separate hostname config entry Use the vm name and set hostname and fqdn in user data again. Signed-off-by: Wolfgang Bumiller --- PVE/QemuServer.pm | 6 ------ PVE/QemuServer/Cloudinit.pm | 34 +++++++++++++++++----------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 6237cbc..a51f832 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -574,12 +574,6 @@ my $confdesc_cloudinit = { description => "cloud-init : Setup public SSH keys (one key per line, " . "OpenSSH format).", }, - hostname => { - optional => 1, - description => "cloud-init: Hostname to use instead of the vm-name + search-domain.", - type => 'string', format => 'dns-name', - maxLength => 255, - }, }; # what about other qemu settings ? diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm index 9fcb817..c026d79 100644 --- a/PVE/QemuServer/Cloudinit.pm +++ b/PVE/QemuServer/Cloudinit.pm @@ -44,26 +44,30 @@ sub get_cloudinit_format { return 'nocloud'; } -sub get_fqdn { +sub get_hostname_fqdn { my ($conf) = @_; - my $fqdn = $conf->{hostname}; - if (!defined($fqdn)) { - $fqdn = $conf->{name}; - if (my $search = $conf->{searchdomain}) { - $fqdn .= ".$search"; - } + my $hostname = $conf->{name}; + my $fqdn; + if ($hostname =~ /\./) { + $fqdn = $hostname; + $hostname =~ s/\..*$//; + } elsif (my $search = $conf->{searchdomain}) { + $fqdn = "$hostname.$search"; } - return $fqdn; + return ($hostname, $fqdn); } sub cloudinit_userdata { my ($conf) = @_; - my $fqdn = get_fqdn($conf); + my ($hostname, $fqdn) = get_hostname_fqdn($conf); my $content = "#cloud-config\n"; $content .= "manage_resolv_conf: true\n"; + $content .= "hostname: $hostname\n"; + $content .= "fqdn: $fqdn\n" if defined($fqdn); + my $username = $conf->{ciuser}; my $password = $conf->{cipassword}; @@ -324,24 +328,20 @@ sub nocloud_network { } sub nocloud_metadata { - my ($uuid, $hostname) = @_; - return <<"EOF"; -instance-id: $uuid -local-hostname: $hostname -EOF + my ($uuid) = @_; + return "instance-id: $uuid\n"; } sub generate_nocloud { my ($conf, $vmid, $drive, $volname, $storeid) = @_; - my $hostname = $conf->{hostname} // ''; my $user_data = cloudinit_userdata($conf); my $network_data = nocloud_network($conf); - my $digest_data = $user_data . $network_data . "local-hostname: $hostname\n"; + my $digest_data = $user_data . $network_data; my $uuid_str = Digest::SHA::sha1_hex($digest_data); - my $meta_data = nocloud_metadata($uuid_str, $hostname); + my $meta_data = nocloud_metadata($uuid_str); mkdir "/tmp/cloudinit"; my $path = "/tmp/cloudinit/$vmid"; -- 2.39.2