hashicorp / vagrant

Vagrant is a tool for building and distributing development environments.
https://www.vagrantup.com
Other
26.02k stars 4.42k forks source link

hostname does not get set correctly, seperated by dot #13293

Open iameru opened 7 months ago

iameru commented 7 months ago

I have a bunch of VMs defined and a Vagrantfile like this:

# -*- mode: ruby -*-
# vi: set ft=ruby :
local_vms = [
  { 
    :name => "logger-server-debian",
    :hostname => "debian.server.server-loggers.local",
    :box => "generic/debian12",
    :ip => "192.168.47.22",
  },
  # imagine more config like this
]
Vagrant.configure("2") do |config|
  config.vm.provider "libvirt" do |v|
    v.memory = 1024
    v.cpus = 1
  end
  local_vms.each do |vm|
    config.vm.define vm[:name] do |v|
      v.vm.hostname = vm[:hostname]
      v.vm.box = vm[:box]
      v.vm.network "private_network", ip: vm[:ip]
    end
  end
end

the hostname ends up being debian in this case and not debian.server.server-loggers.local what it is supposed to be.

Debug output

There is some debug Info I deemed interesting.

 INFO ssh: Execute: # Set the hostname
echo 'debian' > /etc/hostname

# Update mailname
echo 'debian.server.server-loggers.local' > /etc/mailname

so it clearly catches the string from vm[:hostname] but does not use it for setting the hostname.

 INFO interface: info: Setting hostname...
 INFO interface: info: ==> logger-server-debian: Setting hostname...
==> logger-server-debian: Setting hostname...
DEBUG ssh: Checking whether SSH is ready...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: SSH is ready!
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:  (sudo=false)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh
DEBUG ssh: Exit status: 0
DEBUG guest: Searching for cap: change_host_name
DEBUG guest: Checking in: debian
DEBUG guest: Found cap: change_host_name in debian
 INFO guest: Execute capability: change_host_name [#<Vagrant::Machine: logger-server-debian (VagrantPlugins::ProviderLibvirt::Provider)>, "debian.server.server-loggers.local"] (debian)
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: hostname -f | grep '^debian.server.server-loggers.local$' (sudo=false)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh
DEBUG ssh: Exit status: 1
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:           grep -w 'debian.server.server-loggers.local' /etc/hosts || {
            for i in 1 2 3 4 5; do
grep -w "127.0.${i}.1" /etc/hosts || {
  echo "127.0.${i}.1 debian.server.server-loggers.local debian" >> /etc/hosts
  break
}
            done
          }
 (sudo=true)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh
DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: # Set the hostname
echo 'debian' > /etc/hostname

# Update mailname
echo 'debian.server.server-loggers.local' > /etc/mailname

 (sudo=true)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh
DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: command -v hostnamectl && hostnamectl (sudo=false)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh
DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: hostnamectl set-hostname 'debian' (sudo=true)
DEBUG ssh: stderr: 41e57d38-b4f7-4e46-9c38-13873d338b86-vagrant-ssh

Vagrant 2.4.0

switch :hostname => "debian.server.server-loggers.local", to :hostname => "bla.debian.server.server-loggers.local", makes the hostname be bla.